ich find den fehler im code nicht

douro

New member
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?
 
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.
 

Online-Statistiken

Zurzeit aktive Mitglieder
0
Zurzeit aktive Gäste
36
Besucher gesamt
36

Beliebte Forum-Themen

Zurück
Oben Unten