Heim >Backend-Entwicklung >C++ >Warum gibt „getline()' nach der Zahleneingabe einen leeren String zurück?

Warum gibt „getline()' nach der Zahleneingabe einen leeren String zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-23 19:05:14471Durchsuche

Why Does `getline()` Return an Empty String After Number Input?

getline()-Eingabeprobleme [Duplikat]

Bei Verwendung von getline() zum Abrufen von Benutzereingaben für eine Zeichenfolgenvariable (str) ist dies der Fall Es ist wichtig, sich des Verhaltens von Newline-Zeichen bewusst zu sein. Nach dem Abrufen eines numerischen Werts verbleibt ein Zeilenumbruchzeichen im Eingabepuffer. Dies kann dazu führen, dass nachfolgende getline()-Aufrufe sofort mit einer leeren Zeichenfolge zurückkehren.

Im bereitgestellten Code wird die neue Zeile nach der Zahleneingabe nicht verbraucht, sodass getline(cin, str) sofort mit einer leeren Zeichenfolge zurückkehrt string.

Lösung:

Um das Newline-Zeichen zu überspringen und das ordnungsgemäße getline()-Verhalten sicherzustellen, verwenden Sie die ws (Leerzeichen-)Manipulator:

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

Die Anweisung cin.ignore() liest und verwirft alle verbleibenden Zeichen im Eingabepuffer bis zur nächsten neuen Zeile, wodurch die neue Zeile effektiv verbraucht wird.

Das obige ist der detaillierte Inhalt vonWarum gibt „getline()' nach der Zahleneingabe einen leeren String zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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