Heim >Backend-Entwicklung >C++ >Warum verhält sich getline() in einer Schleife nach der Verwendung von „>>' unerwartet?
>`? " />
getline() und Konsoleneingabe in C
In C wird die Funktion getline() normalerweise verwendet, um eine Textzeile aus einem Stream zu extrahieren Bei mehrmaliger Verwendung in einer Schleife kann es jedoch zu unerwartetem Verhalten kommen.
Problem:
Beim Versuch Sammeln Sie Benutzereingaben mit getline() für Zeichenfolgen und >> für Ganzzahlen und Doppelzahlen. Stattdessen springt der Konsolencursor nach dem zweiten getline()-Aufruf zur nächsten Eingabeaufforderung.
Erklärung:
Das Problem ist auf die Vermischung von getline() und >> zurückzuführen liest die Eingabe, bis sie ein Nicht-Leerzeichen erreicht. Es bleibt jedoch ein Newline-Zeichen (n) im Eingabestream.
Wenn getline() nach >> aufgerufen wird, liest es das Newline-Zeichen als die leere Zeichenfolge, was zum Unerwünschten führt Verhalten.
Lösung:
string line; getline(cin, line); int value = stoi(line); // Parse the number from the string
Das obige ist der detaillierte Inhalt vonWarum verhält sich getline() in einer Schleife nach der Verwendung von „>>' unerwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!