Heim >Backend-Entwicklung >C++ >Warum fordert „getline' nach der Verwendung von „>>' nicht zur Eingabe auf und wie kann ich das beheben?

Warum fordert „getline' nach der Verwendung von „>>' nicht zur Eingabe auf und wie kann ich das beheben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-27 10:07:08973Durchsuche

Why is `getline` not prompting for input after using `>>`, und wie kann ich es beheben?
>`, und wie kann ich es beheben? " />

Behebung des Eingabeproblems mit getline

Dieser Code verwendet die getline-Funktion, um Eingaben zu lesen, nachdem der Operator>> für andere Eingaben verwendet wurde. Allerdings getline fordert den Benutzer nicht zur Eingabe auf und verwendet stattdessen den Anfangswert 0 für die Preisvariable.

Der Grund für dieses Verhalten hängt mit zusammen Operator>> ist durch Leerzeichen getrennt, d drücken Sie die Eingabetaste, um ihre Eingabe zu übermitteln, wobei das Zeilenumbruchzeichen im Eingabepuffer verbleibt.

Wenn getline anschließend aufgerufen wird, findet es sofort das Zeilenumbruchzeichen im Puffer und verwendet es, um die Eingabe zu beenden, noch bevor dem Benutzer die Möglichkeit gegeben wird, den tatsächlichen Preis einzugeben. Um dieses Problem zu lösen, gibt es zwei Ansätze:

1 Verwenden Sie „ignore()“ oder einen Dummy-getline-Aufruf

Bevor Sie getline aufrufen, verwenden Sie die Funktion „ignore()“, um das Newline-Zeichen aus dem Eingabepuffer zu löschen. Alternativ können Sie einen Dummy-Aufruf an getline() durchführen, um die neue Zeile zu entfernen.

2. Verwenden Sie ausschließlich getline

Anstatt den Operator>> zu verwenden, verwenden Sie getline für alle Eingaben und konvertieren Sie die erfassten Zeichenfolgen in die gewünschten Datentypen, indem Sie Funktionen wie stoi() für Ganzzahlen und stod() für Gleitkommazahlen verwenden . Dieser Ansatz gewährleistet Datensicherheit und Robustheit.

Das obige ist der detaillierte Inhalt vonWarum fordert „getline' nach der Verwendung von „>>' nicht zur Eingabe auf und wie kann ich das beheben?. 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