Boucle infinie lors de la saisie d'une lettre au lieu d'un chiffre
Lorsque vous rencontrez une saisie de caractère plutôt qu'un nombre entier, le code fourni tombe dans un boucle infinie tout en affichant le message "Le nombre que vous avez entré est négatif. Veuillez saisir un nombre positif pour continuer." Cela se produit pour les raisons suivantes :
Problème :
Le flux cin n'est pas correctement géré lorsqu'il rencontre une entrée non valide (un caractère dans ce cas). Il laisse le flux dans un état erroné, connu sous le nom d'indicateur « failbit ».
Solution :
Pour résoudre ce problème, suivez les étapes suivantes :
Vérifiez la réussite de la saisie lors de la lecture du numéro (en utilisant cin avec l'opérateur de manipulation de flux >>):
while (!(cin >> num1)) { cout << "Incorrect input. Please try again.\n"; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); }
Effacez le flux et ignorez les caractères d'entrée erronés si cin échoue (en utilisant clear() et ignore()) :
En mettant en œuvre ces étapes, le programme détectera l'entrée non valide, effacera le flux et invitera l'utilisateur à saisir un message positif. entier, permettant au programme de continuer sans boucle infinie.
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!