Heim > Backend-Entwicklung > C++ > Warum überspringt „getline()' die Eingabe nach dem Lesen einer Ganzzahl?

Warum überspringt „getline()' die Eingabe nach dem Lesen einer Ganzzahl?

Mary-Kate Olsen
Freigeben: 2024-12-16 21:06:11
Original
225 Leute haben es durchsucht

Why Does `getline()` Skip Input After Reading an Integer?

getline()-Probleme: Überspringen der Newline

Bei Verwendung von getline(cin, str) zum Abrufen von Benutzereingaben nach dem Lesen einer Ganzzahl mit cin >> Wenn Sie die Nummer eingeben, kann es zu einem unerwarteten Verhalten kommen, bei dem die Eingabeaufforderung für den Namen die Eingabe für str überspringt. Dies geschieht, weil getline(cin, str) das von der vorherigen Ganzzahleingabe hinterlassene Zeilenumbruchzeichen liest und verwirft.

Um dieses Problem zu beheben, können Sie std::ws vor getline(cin, str) verwenden, um Leerzeichen zu überspringen , einschließlich Zeilenumbrüchen, bevor Sie die Zeichenfolge lesen. Dadurch wird sichergestellt, dass getline(cin, str) die Benutzereingabe korrekt liest, ohne die Namensaufforderung zu überspringen:

int number;
string str;
int accountNumber;

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
getline(cin, str);
cout << "Enter account number:";
cin >> accountNumber;
Nach dem Login kopieren

Durch die Verwendung von cin.ignore umgehen Sie effizient alle verbleibenden Leerzeichen oder Zeilenumbrüche, sodass getline(cin, str ), um die Namenseingabe des Benutzers wie vorgesehen zu erfassen.

Das obige ist der detaillierte Inhalt vonWarum überspringt „getline()' die Eingabe nach dem Lesen einer Ganzzahl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage