Maison > développement back-end > C++ > Pourquoi « cin » provoque-t-il une boucle infinie avec une entrée non numérique ?

Pourquoi « cin » provoque-t-il une boucle infinie avec une entrée non numérique ?

DDD
Libérer: 2024-12-22 16:51:12
original
694 Les gens l'ont consulté

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

Boucle infinie avec cin lors de l'attente d'une saisie numérique avec saisie de caractères

Le code en question implique une boucle infinie avec cin lorsque des caractères sont saisis à la place des nombres attendus.

Explication d'Infinite Loop

Lorsque cin rencontre une entrée non numérique, il entre dans l'état d'échec et cesse de demander à la ligne de commande une entrée supplémentaire. Cela entraîne la poursuite de l'exécution de la boucle sans aucune interaction de l'utilisateur.

Détection des entrées invalides avec cin

Pour éviter ce problème et détecter les entrées invalides, vous pouvez vérifier si cin est en état d'échec en utilisant :

if (cin.fail())
{
    // Handle invalid input here
}
Copier après la connexion

Si l'état d'échec est rencontré, vous pouvez l'effacer et supprimer la mauvaise entrée using :

cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Copier après la connexion

Cela réinitialise cin à un état de fonctionnement, vous permettant de continuer à demander une saisie.

Pour une validation plus sophistiquée, vous pouvez utiliser un flux d'entrée de chaîne pour vérifier le caractère saisi par caractère et effectuer une validation plus avancée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal