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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top