Heim > Backend-Entwicklung > C++ > Wie verhindert man Endlosschleifen, die durch ungültige Eingaben mit „cin' verursacht werden?

Wie verhindert man Endlosschleifen, die durch ungültige Eingaben mit „cin' verursacht werden?

Susan Sarandon
Freigeben: 2024-12-31 14:48:12
Original
495 Leute haben es durchsucht

How to Prevent Infinite Loops Caused by Invalid Input with `cin`?

Endlosschleife mit ungültiger Eingabe und cin

Bei Verwendung von cin zum Lesen von Eingaben kann eine Endlosschleife auftreten, wenn die Eingabe nicht von der ist erwarteter Typ. Dieses Problem tritt besonders deutlich auf, wenn versucht wird, Zahlen einzugeben, aber versehentlich Zeichen eingegeben werden.

Das Problem ergibt sich aus dem Fehlerstatus, den cin eingibt, wenn es auf eine ungültige Eingabe stößt. In solchen Szenarien fordert cin eine Eingabe auf, was zu einer Endlosschleife führt.

Um dieses Verhalten zu verhindern, besteht eine Lösung darin, zu überprüfen, ob sich cin im Fehlerzustand befindet. Wenn dies der Fall ist, wird der Fehlerstatus gelöscht und die fehlerhafte Eingabe mit cin.ignore() verworfen. Dadurch kann cin zu seinem normalen Betrieb zurückkehren und zu weiteren Eingaben auffordern.

if (cin.fail()) {
  cout << "ERROR -- Invalid input detected" << endl;
  cin.clear();
  cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
Nach dem Login kopieren

Alternativ können Sie std::getline() verwenden, um die Eingabe als Zeichenfolge zu lesen und anspruchsvollere Validierungsprüfungen durchzuführen, bevor Sie es versuchen um es in eine Zahl umzuwandeln. Dieser Ansatz bietet mehr Flexibilität und ermöglicht eine komplexere Eingabevalidierung.

Das obige ist der detaillierte Inhalt vonWie verhindert man Endlosschleifen, die durch ungültige Eingaben mit „cin' verursacht werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage