Maison >développement back-end >C++ >Comment puis-je vérifier efficacement les entrées utilisateur entières en C ?
Énoncé du problème
Dans un programme C, il est crucial de garantir que les entrées utilisateur est au format attendu, notamment lors de l'exécution d'opérations mathématiques. Cet article explique comment déterminer si l'entrée fournie par l'utilisateur est un nombre entier. Si l'entrée n'est pas un nombre entier, le programme invitera l'utilisateur à saisir à nouveau un entier valide.
Solution
Il existe deux approches principales pour vérifier la saisie de l'utilisateur sous forme d'entier :
1. Utilisation de cin.fail() :
2. Utilisation de std::getline et de la manipulation de chaînes :
Implémentation
Vous trouverez ci-dessous un extrait de code qui implémente la manipulation std::getline et les chaînes approche :
#include <iostream> #include <string> int main() { std::string theInput; int inputAsInt; std::getline(std::cin, theInput); while(std::cin.fail() || std::cin.eof() || theInput.find_first_not_of("0123456789") != std::string::npos) { std::cout << "Error" << std::endl; if( theInput.find_first_not_of("0123456789") == std::string::npos) { std::cin.clear(); std::cin.ignore(256,'\n'); } std::getline(std::cin, theInput); } std::string::size_type st; inputAsInt = std::stoi(theInput,&st); std::cout << inputAsInt << std::endl; return 0; }
Ce code invite en permanence l'utilisateur à saisir un entier jusqu'à ce qu'un entier valide soit saisi. Il gère les situations dans lesquelles l'utilisateur saisit des caractères non numériques ou fournit une entrée vide.
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!