>` Operator? " />
getline fordert nicht zur Eingabe auf
In diesem Codeausschnitt tritt das Problem auf, wenn getline nach Verwendung des >>-Operators verwendet wird. Wenn >> ; wird zum Lesen von Eingaben verwendet. Auf die Eingabe des Benutzers folgt ein Zeilenumbruchzeichen, das im Eingabepuffer verbleibt. Dieses Verhalten wird problematisch, wenn getline unmittelbar danach aufgerufen wird erwartet, eine Eingabezeile zu lesen, findet aber das Zeilenumbruchzeichen und wird beendet, ohne den Benutzer dazu aufzufordern.
Lösung:
Um dieses Problem zu beheben, gibt es zwei praktikable Lösungen:
Verwenden Sie „Ignorieren“, um das zu konsumieren Newline:
Rufen Sie „ignore“ auf, um das Newline-Zeichen aus dem Eingabepuffer zu verbrauchen, bevor Sie getline verwenden.
cin.ignore(); getline(cin, mystr);
Getline ausschließlich verwenden:
Anstatt >> und getline zu mischen, verwenden Sie ausschließlich getline, um alle Eingaben zu lesen. Dieser Ansatz vereinfacht den Code und beseitigt potenzielle Probleme zu Zeilenumbrüchen.
getline(cin, name); getline(cin, i); getline(cin, mystr);
Das obige ist der detaillierte Inhalt vonWarum fordert „getline' nach Verwendung des Operators „>>' nicht zur Eingabe auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!