Ergebnis 1 bis 2 von 2

Thema: ich find den fehler im code nicht

  1. #1
    douro Findet sich zurecht
    Registriert seit
    31.05.2009
    Beiträge
    368
    Danksagungen
    2

    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?

  2. #2
    Avatar von pixelflat
    pixelflat Super-Moderator und Deus ex machina
    Registriert seit
    06.03.2007
    Beiträge
    10.835
    Danksagungen
    1.059

    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.

Um auf dieses Thema zu ANTWORTEN bitte sich zuerst » hier kostenlos registrieren!!
Neue Frage stellen?
Kurze Zusammenfassung der Frage:

Ähnliche Themen

  1. LaTex Code Fehler, wo?
    Von Heimdall im Forum Windows Programme und Apps
    Antworten: 2
    Letzter Beitrag: 13.11.2009, 18:40
  2. Fehler Code 39
    Von -Becks92- im Forum Hardware Allgemein
    Antworten: 0
    Letzter Beitrag: 29.10.2009, 17:28
  3. Stop Fehler 0x0000008E
    Von bluebird im Forum Windows Programme und Apps
    Antworten: 2
    Letzter Beitrag: 26.06.2009, 19:20

Stichworte