Contrôler le "cin"

Contenu du snippet

le "cin" est sympa mais il se met facilement en boule (en boucle?).
Suite à une question par message, voici une snipette pouvant servir d'exemple

Source / Exemple :


/*
il est délicat de lire avec cin . Exemple :
si l'on attend une saisie de chiffre et que l'utilisateur saisit une lettre, 
le flux part en "bad" et boucle....

  • /
Voici une solution #include <iostream> using namespace std; int main() { int i=0; char buf[80]; do { cout << "taper un chiffre (0 pour finir)" << endl; //mauvaise solution ... //cin >> i; ... => ça va boucler ... //if (cin.bad()) ... sans arriver ici ! //{cout << "pas un chiffre ! "<<endl; //bonne solution if (!(cin >> i)) { cout << "pas un chiffre! "<<endl; cin.clear();//remettre le flux dans l'état good cin.getline(buf,80);// poubelliser le reste du buffer } else cout << "=> " << i << endl; } while (i!=0); return 0; }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.