Ça vérifie que la chaîne entrée par l’utilisateur n’est pas vide, et s’arrête si tel est le cas.
Euhhh. Non. Ca ne peut pas dire: "c’est vide". Cette notion n’existe pas. Au mieux, et ce avec quoi on pourrait confondre, c’est: "il n’y a plus rien".
Ca teste que l’on est capable de lire. Et c’est à peut-près la seule façon correcte d’exprimer une boucle de lecture: while (je_realise_une_operation_de_lecture())
.
Le test d’extraction renverra faux essentiellement dans deux cas:
- il n’y a plus rien et le flux a été fermé (classique avec les fichiers, mais possible aussi avec stdin (cas des filtres/redicrection/CTRL-D (/CTRL-Z (win)dos)).
- ce qui est dans le buffer du flux n’est pas compatible avec le type demandé (genre "quarante-deux" n’est pas décodable comme un entier)
- (plus les cas de corruptions profondes de l’intégrité du disque, ce genre de choses)
Donc pour bien faire, il faudrait tester (après la boucle!!!) si on a atteint la fin du flux ou si les décodages (vers entiers — pour les chaines il n’y aura pas de soucis) échouent.
D’autres détails: https://cpp.developpez.com/faq/cpp/?page=Manipulation-de-la-console#Comment-verifier-les-valeurs-saisies-avec-cin