Heim > Backend-Entwicklung > C++ > Warum verursacht „cin' eine Endlosschleife bei nicht numerischer Eingabe?

Warum verursacht „cin' eine Endlosschleife bei nicht numerischer Eingabe?

DDD
Freigeben: 2024-12-22 16:51:12
Original
770 Leute haben es durchsucht

Why Does `cin` Cause an Infinite Loop with Non-Numerical Input?

Endlosschleife mit cin, wenn eine numerische Eingabe mit Zeicheneingabe erwartet wird

Der betreffende Code beinhaltet eine Endlosschleife mit cin, wenn stattdessen Zeichen eingegeben werden der erwarteten Zahlen.

Erklärung von Unendlich Schleife

Wenn cin auf eine nicht numerische Eingabe stößt, wechselt es in den Fehlerzustand und fordert die Befehlszeile nicht mehr zu weiteren Eingaben auf. Dadurch läuft die Schleife ohne Benutzerinteraktion weiter.

Erkennen ungültiger Eingaben mit cin

Um dieses Problem zu vermeiden und ungültige Eingaben zu erkennen, können Sie überprüfen, ob cin vorhanden ist im Fehlerzustand mit:

if (cin.fail())
{
    // Handle invalid input here
}
Nach dem Login kopieren

Wenn der Fehlerzustand auftritt, können Sie ihn löschen und die fehlerhafte Eingabe verwerfen mit:

cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Nach dem Login kopieren

Dadurch wird cin in einen Arbeitszustand zurückgesetzt, sodass Sie weiterhin zur Eingabe auffordern können.

Für eine anspruchsvollere Validierung können Sie einen String-Eingabestream verwenden, um das Eingabezeichen zu überprüfen nach Zeichen und führen Sie eine erweiterte Validierung durch.

Das obige ist der detaillierte Inhalt vonWarum verursacht „cin' eine Endlosschleife bei nicht numerischer Eingabe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage