Comment gérer les entrées de type de données erronées
En C, traiter les entrées non valides est crucial pour maintenir l'intégrité du programme. Par exemple, lors d'une demande d'un entier et d'une saisie de caractère, le programme doit gérer l'erreur avec élégance et solliciter à nouveau la saisie correcte. Cependant, rencontrer une entrée d'un type inattendu peut conduire à des boucles infinies.
Raison de la boucle infinie
La boucle infinie se produit parce que l'indicateur « mauvaise entrée » du flux d'entrée est défini lorsque l’entrée attendue n’est pas reçue. L'indicateur d'entrée incorrecte doit être effacé manuellement et l'entrée incorrecte supprimée du tampon de flux.
Solution utilisant la validation d'entrée
Pour éviter la boucle infinie, utilisez ce qui suit approche :
// Loop if input fails (e.g., no characters were read) while (std::cout << "Enter a number" && !(std::cin >> num)) { std::cin.clear(); // Clear the bad input flag std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Discard the input std::cout << "Invalid input; please re-enter.\n"; }
Approche de saisie alternative
Au lieu d'utiliser validation d'entrée, vous pouvez obtenir l'entrée sous forme de chaîne, puis essayer de la convertir en entier en utilisant std::stoi ou une méthode similaire qui fournit des vérifications de l'état de conversion.
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!