Warum funktioniert diese Schei.e nicht???



  • Hallo,

    #include <iostream>
    #include <string>
    #include <fstream>
    using namespace std;
    
    int main()
    {
      int wahl;
      string test;
      ofstream dat_aus;
      cin>>wahl;
      if(wahl==1)
      {
         getline(cin,test);
         cout<<test;
         dat_aus.open("test.txt",ios::out);
         dat_aus<<test;
      }
      system("PAUSE");
      return 0;
    }
    

    So Warum kann ich nun nicht den Text eingeben sonder warum erscheint gleich Drücke Sie eine Taste oder so????

    MfG

    Sascha081088



  • nachdem du 1 eingibst drückst du auch die Enter-Taste.
    Die 1 wird dabei in wahl gespeichert, das '\n' vom Zeilenwechsel
    aber nicht. Dies bleibt im cin Puffer und wenn dann
    das getline(cin,test); ausgeführt wird,
    wird dort das '\n' abgelegt und das Programm
    schreibt die Datei und wird beendet.

    Du müßtest das '\n' aus dem Puffer löschen oder abfangen.

    if(wahl==1) 
      { 
    
         getline(cin,test);
         getline(cin,test); 
         cout<<test; 
         dat_aus.open("test.txt",ios::out); 
         dat_aus<<test; 
      }
    

    Hierbei wird nun das '\n' durch eine zusätzliche getline()
    abgefangen und erst in der 2. getline() gibst du dann deine
    Eingabe ein.

    Ist bestimmt die uneleganteste Lösung, aber sie funktioniert
    um das '\n' abzufangen.

    Gruß,
    DC



  • Cool Thx teste es gleich mal!!!


Anmelden zum Antworten