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!