Test de code pour comprendre comportement

Je ne comprends pas le comportement de mon code...

a marqué ce sujet comme résolu.

N’est-ce pas juste pour tester si une chaine de caractères est entrée dans un int au lieu d’un entier ?

D’ailleurs, un entier saisi au clavier, c’est une chaine de caractère, comme une autre. (Et même un peu mieux qu’une autre, parce que la machine saura éventuellement la convertir en entier, si c’est demandé)

+0 -0

N’est-ce pas juste pour tester si une chaine de caractères est entrée dans un int au lieu d’un entier ?

D’ailleurs, un entier saisi au clavier, c’est une chaine de caractère, comme une autre. (Et même un peu mieux qu’une autre, parce que la machine saura éventuellement la convertir en entier, si c’est demandé)

elegance

Oui c’est vrais!

+0 -0

Ç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

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte