Heim >Backend-Entwicklung >C++ >Warum verursacht „cin' eine Endlosschleife bei nicht numerischer Eingabe?
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 }
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');
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!