Heim > Backend-Entwicklung > C++ > Hauptteil

Warum beendet getline() die Eingabe in C vorzeitig?

Barbara Streisand
Freigeben: 2024-11-10 17:27:02
Original
943 Leute haben es durchsucht

Why Does getline() Terminate Input Prematurely in C  ?

Fehlerbehebung bei der getline()-Funktion in C

Bei der Verwendung der getline()-Methode zum Abrufen von vom Benutzer eingegebenen Nachrichten stoßen einige Entwickler auf ein Problem wobei die Methode die Eingabe vorzeitig beendet.

Problem: Das Programm wartet nicht für Benutzereingaben nach Aufforderung mit „Geben Sie Ihre Nachricht ein:“ unter Verwendung des Codes:

string messageVar;
cout << "Type your message: ";
getline(cin, messageVar);
Nach dem Login kopieren

Grundlegendes Problem:

Wenn cin >> Wird vor getline() verwendet, verbleibt ein Zeilenumbruchzeichen im Eingabepuffer. Diese neue Zeile bleibt im Puffer, wenn getline() versucht, Eingaben zu lesen, was zu einer sofortigen Beendigung führt.

Lösung:

Um dieses Problem zu beheben, muss es unbedingt entfernt werden das Newline-Zeichen aus dem Eingabepuffer, bevor Sie getline() verwenden. Dies kann mit der Funktion cin.ignore() erreicht werden. Der geänderte Code:

string messageVar;
cout << "Type your message: ";
cin.ignore(); // Flushes the newline character
getline(cin, messageVar);
Nach dem Login kopieren

Durch das Leeren des Newline-Zeichens kann getline() Eingaben korrekt lesen, bis der Benutzer eine Newline eingibt, was den Abruf der beabsichtigten Nachricht ermöglicht.

Das obige ist der detaillierte Inhalt vonWarum beendet getline() die Eingabe in C vorzeitig?. 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