Manière correcte d'utiliser cin.fail ()
Quelle est la façon correcte d'utiliser cin.fail();
?
Je fais un programme où vous devez saisir quelque chose. Il n'est pas très clair si vous devez saisir un chiffre ou un caractère. Lorsqu'un utilisateur tape un caractère au lieu d'un numéro de la console devient fou. Comment puis-je utiliser cin.fail()
de résoudre ce problème?
Ou est-il un meilleur moyen?
source d'informationauteur | 2013-07-29
Vous devez vous connecter pour publier un commentaire.
cin.fail()
retourne true si le dernier cin échec de la commande, et false sinon.Un exemple
Maintenant, supposons que vous disposez d'un fichier texte - input.txt et son contenu sont:
Lorsque vous courez au-dessus de programme court, ce sera le résultat comme:
il ne va pas continuer après le 6 valeur comme il se ferme après la lecture de la septième motparce que ce n'est pas un nombre entier:
cin.fail()
détienttrue
.std::cin.fail()
est utilisé pour tester si l'entrée précédenteréussi. Il est, cependant, plus idiomatique suffit d'utiliser la
flux comme si c'était un booléen:
Dans des contextes où la syntaxe de l'entrée de permettre à un nombre
d'un caractère, la solution habituelle est d'une lecture par lignes (ou dans
une autre chaîne), et de l'analyser; lorsque vous constatez que
il y a un certain nombre, vous pouvez utiliser un
std::istringstream
àle convertir, ou n'importe quel nombre d'autres alternatives (
strtol
, oustd::stoi
si vous avez le C++11).Il est, cependant, possible d'extraire les données directement à partir de la
stream: