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);
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);
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!