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

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

DDD
DDDOriginal
2024-12-22 16:51:12772Durchsuche

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
}

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!

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