Heim > Artikel > Backend-Entwicklung > Warum funktioniert „getline()“ nicht, nachdem der Extraktionsoperator von „cin“ verwendet wurde?
Verhalten von getline() verstehen
Die Funktion getline() in C wird verwendet, um Zeichen aus der Standardeingabe zu lesen, bis ein Zeilenumbruchzeichen angezeigt wird angetroffen. Entwickler können jedoch auf unerwartete Probleme stoßen, wenn sie getline() nach dem Extraktionsoperator von cin (>>) verwenden.
Problembeschreibung
Benutzer stellen möglicherweise fest, dass ihr Code fehlerhaft ist Es wird nicht angehalten, Benutzereingaben zu empfangen, wenn versucht wird, vom Benutzer bereitgestellte Nachrichten mit getline() zu erfassen. Die zugrunde liegende Ursache hängt mit dem Verhalten des cin-Extraktionsoperators zusammen.
Lösung: Leeren des Zeilenumbruchzeichens
Nachdem der cin-Extraktionsoperator zum Lesen von Daten verwendet wurde, hinterlässt er eine neue Zeile Zeichen (n) im Eingabepuffer. Wenn getline() unmittelbar danach aufgerufen wird, stößt es auf dieses Newline-Zeichen und hört sofort auf zu lesen.
Um dieses Problem zu beheben, muss man das Newline-Zeichen aus dem Puffer leeren, bevor man getline() aufruft. Dies kann durch die Verwendung von cin.ignore() wie folgt erreicht werden:
string messageVar; cout << "Type your message: "; cin.ignore(); getline(cin, messageVar);
Durch das Einfügen von cin.ignore() wird das Newline-Zeichen verworfen, sodass getline() die Eingaben des Benutzers wie beabsichtigt lesen kann. Diese Technik stellt sicher, dass sowohl der Cin-Operator als auch getline() reibungslos nacheinander funktionieren.
Das obige ist der detaillierte Inhalt vonWarum funktioniert „getline()“ nicht, nachdem der Extraktionsoperator von „cin“ verwendet wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!