Heim >Backend-Entwicklung >C++ >Warum führt das Mischen der Operatoren „getline' und „>>' dazu, dass Eingaben in C ausgelassen werden?

Warum führt das Mischen der Operatoren „getline' und „>>' dazu, dass Eingaben in C ausgelassen werden?

DDD
DDDOriginal
2024-11-29 15:13:10966Durchsuche

Why Does Mixing `getline` and `>>` Operatoren verursachen Eingabeauslassungen in C?
>` Operatoren verursachen Eingabeauslassungen in C? " />

Das Mischen von getline und Operator>> führt zu Eingabeauslassungen

Bei diesem Code tritt ein Problem auf, während versucht wird, Benutzereingaben für den Preis der Jacke mithilfe von getline abzurufen. Trotz Bei der Aufforderung an den Benutzer wird die Eingabe nicht erfasst und stattdessen der Anfangswert „0“ verwendet.

Das zugrunde liegende Problem liegt in der Mischung aus Bei der Verwendung von „Operator>>“ werden die Daten des Benutzers eingegeben, gefolgt von der Eingabetaste, die ein Zeilenumbruchzeichen in den Eingabepuffer einfügt Das Newline-Zeichen wird der Variablen nicht zugewiesen und verbleibt im Puffer.

Anschließend wird beim Aufruf von getline das Newline-Zeichen sofort im Puffer gefunden. das Suchkriterium erfüllt, ohne den Benutzer zur Eingabe aufzufordern.

Lösungen

Um dieses Problem zu beheben, ziehen Sie die folgenden Optionen in Betracht:

  1. Verwenden Sie „ignore“ oder einen Dummy-Aufruf für getline: Rufen Sie „ignore“ auf oder führen Sie einen Dummy-getline-Aufruf aus, um das Zeilenumbruchzeichen aus dem Puffer zu entfernen nach Verwendung von Operator>>.
  2. Ausschließlich getline verwenden: Operator>> entfernen und verlassen Sie sich ausschließlich auf getline. Konvertieren Sie dann Ihre Zeichenfolgen in die gewünschten Datentypen, indem Sie Funktionen wie stoi oder stod für Ganzzahlen bzw. Doppelzahlen verwenden. Dieser Ansatz verbessert die Stabilität und Robustheit des Codes.

Das obige ist der detaillierte Inhalt vonWarum führt das Mischen der Operatoren „getline' und „>>' dazu, dass Eingaben in C ausgelassen werden?. 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