Heim  >  Artikel  >  Backend-Entwicklung  >  Warum akzeptiert meine Funktion „getline()“ keine Benutzereingaben in C?

Warum akzeptiert meine Funktion „getline()“ keine Benutzereingaben in C?

DDD
DDDOriginal
2024-11-13 09:50:02834Durchsuche

Why Is My `getline()` Function Not Accepting User Input in C  ?

Fehlerbehebung bei getline() 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.

Lösung

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!

Stellungnahme:
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