Lesen einiger Zahlen dann eine Textzeile in C ++
Frage
Ich lese Eingang in einem C ++ Programm. Zunächst einige Zahlen, dann eine Zeichenfolge. Wenn ich versuche, den String mit getline(cin,stringname);
lese, ist es nicht die Zeile lesen, die der Benutzer. Stattdessen ich eine leere Zeile zu erhalten, aus, wenn der Benutzer gedrückt Enter nach den ganzen Zahlen eingeben
cin>>track.day; //Int
cin>>track.seriesday; //Int
getline(cin,track.comment); //String
Wie kann ich die cin
löschen (cin.clear()
funktioniert nicht), so dass die Zeichenfolge füllt sich nicht mit der „Enter“ -Taste?
Es ist ein normaler Eingang empfängt, nichts Besonderes an der Spitze des Codes,
Ich hatte ein Problem wie dieses, aber ich habe vergessen, die Lösung
Ich brauche die cin
someway zu löschen, so wird der String nicht mit „Enter“ -Taste gefüllt werden.
Lösung
Ich denke, dass Ihre cin des ints ist nicht die neue Zeile vor dem Satz zu lesen. cin überspringt Leerzeichen führende und stoppt das Lesen einer Reihe, wenn sie eine nicht-stellige trifft, einschließlich Leerzeichen.
So:
std::cin >> num1;
std::cin >> num2;
std::cin.ignore(INT_MAX, '\n'); // ignore the new line which follows num2
std::getline(std::cin, sentence);
könnte für Sie arbeiten