PCMasters Hardware Forum > Software > GFX, Webdesign und Programmierung > Seite 9 > ich find den fehler im code nicht

Im PC Forum registrieren


Produktsuche
IDEALO-PRODUKT-SUCHE
idealo preisvergleich
PCM News & Reviews
Antwort
 
 
Alt 27.01.2010, 15:15
Threadersteller
douro
 
Standard

ich find den fehler im code nicht



hi, ich habe ein tool geschrieben mit dem man solche .vbs msg boxen machen kann.
Code:
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
    ofstream dat_aus;
    string eingabe;
    string name;
    int nummer;
    cout << "geben sie den namen der datei an, die erstellt werden soll" << endl << "DER NAME MUSS MIT .VBS  ENDEN" << endl;
    cin >> name;
    dat_aus.open(name.c_str(), ios_base::out);
      if(!dat_aus)
  {
     cout << "Datei konnte nicht erstellt  werden!";
     cout << endl;
     return -1;
  }
    cout << "nun geben sie ein, was in Box 1 stehen soll.. um die schleife zu beenden geben  sie 123EXIT ein" << endl;
    for(nummer = 1; eingabe != "123EXIT"; nummer = nummer + 1)
{
    cout << nummer << ": ";
    getline(cin, eingabe);
    if(eingabe != "123EXIT")
{
    dat_aus << "MsgBox \"" << eingabe << "\"" << endl;
}
}
    dat_aus.close();
    return 0;
}

mein problem ist das die schleife irgendwie falsch ausgeführt wird weil zu start wenn da 1: stehen sollte steht da schon 1: 2: außerdem wir erste eine msgbox ohne inhalt erstellt. kann mir wer helfen?
Alt Heute
Hardware Bot
Computer Informationen
 
Diese Werbung wird registrierten
Mitgliedern nicht angezeigt.
Werden Sie noch heute kostenlos Mitglied
auf PCMasters.de
Standard Weitere Informationen

 
Alt 27.01.2010, 15:34
pixelflat
 
Standard

Du hast vermutlich noch Zeichen im Eingabe-Puffer. Wenn du mit cin >> einliest wird alles bis zum ersten Leerzeichen verwendet - der Rest bleibt im Puffer (inkl dem "\n"). getline() liest aber bis zum ersten "\n" - du hast also nach dem ersten Einlesen noch was im Puffer, das beim ersten Schleifendurchlauf gelesen wird (da das nicht gleich "123EXIT" ist, wirds auch so in die Datei geschrieben). Lösung ist eigentlich relativ simpel: Puffer löschen.

Allerdings gibts dafür afaik nicht wirklich "einen Standard". Es gibt zwar fflush(stdin), aber das ist nicht standardisiert. Soll heißen, bei Linux tut das u.U. überhaupt nichts. Solange du nur für dich und unter Windows arbeitest, sollte das reichen. Ansonsten gibts noch ein paar andere Möglichkeiten, wie cin.ignore(INT_MAX);. Dabei werden einfach X Zeichen (in dem Fall INT_MAX, also ~2Mrd.) im Puffer ignoriert. Das sollte eigentlich auf jedem System funktionieren.
Folgende User haben sich für den guten Beitrag bedankt:
hardware forum Neue Frage stellen?
Kurze Zusammenfassung der Frage:
Bitte wählen Sie eine Kategorie:
Mailadresse:
Ihre Frage:
Ihre Frage wird als Gast gespeichert. Sollte eine Antwort im Forum erfolgen, bekommen Sie diese per Email zugeschickt.


Zufällige Frage
Um auf dieses Thema zu ANTWORTEN
bitte sich zuerst » hier kostenlos registrieren!!

Antwort

Tags: , ,

Ähnliche Tags: , ,


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
LaTex Code Fehler, wo? Heimdall Anwendungssoftware 2 13.11.2009 18:40
Fehler Code 39 -Becks92- Hardware Allgemein 0 29.10.2009 17:28
Stop Fehler 0x0000008E bluebird Betriebssysteme 2 26.06.2009 19:20


Sie betrachten gerade: ich find den fehler im code nicht


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 Uhr.



Im PC Forum registrieren