Heim > Artikel > Backend-Entwicklung > Warum akzeptiert meine Funktion „getline()“ keine Benutzereingaben in C?
Beim Versuch, die getline()-Methode zum Erfassen von Benutzereingaben zu verwenden, kann es zu unerwartetem Verhalten kommen, bei dem das Programm anhält, ohne Eingaben zu akzeptieren .
Betrachten Sie das folgende Beispiel:
string messageVar; cout << "Type your message: "; getline(cin, messageVar);
Trotz der Anwesenheit der cout-Anweisung Wenn Sie den Benutzer dazu auffordern, wird das Programm vorzeitig beendet, ohne dass Eingaben erfasst werden.
Das Problem entsteht aufgrund der Art des >> Operator, der ein Zeilenumbruchzeichen im Eingabepuffer hinterlässt. Dieses Zeichen steht in Konflikt mit getline(), das erwartet, dass die Eingabe an einem Zeilenumbruch endet.
Um dieses Problem zu mildern, ist es wichtig, das Zeilenumbruchzeichen aus dem Puffer zu löschen. Dies kann mit der Methode cin.ignore() erreicht werden.
Der korrigierte Code sollte wie folgt aussehen:
string messageVar; cout << "Type your message: "; cin.ignore(); getline(cin, messageVar);
Die Anweisung cin.ignore() löscht das Newline-Zeichen aus dem Puffer , sodass getline() ordnungsgemäß funktioniert.
Das obige ist der detaillierte Inhalt vonWarum akzeptiert meine Funktion „getline()“ keine Benutzereingaben in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!