Contrôler le "cin"

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 264 fois - Téléchargée 34 fois

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

Ajouter un commentaire

Commentaires

Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
c'est simplement une façon de se débarrasser du reste de la ligne tapée, pour éviter qu'elle ne remette le flux dans l'état 'bad'
Messages postés
32
Date d'inscription
vendredi 18 janvier 2002
Statut
Membre
Dernière intervention
25 mai 2004

Qu'est-ce que "poubelliser" le reste du buffer ?
Messages postés
1
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
23 mars 2003

A ca faisait une semaine que je cherchait une solution a cette mise en boule de cin .
Une bonne source pour un debutant comme moi !!
Messages postés
18
Date d'inscription
dimanche 2 février 2003
Statut
Membre
Dernière intervention
22 décembre 2003

Cette petite astuce va m'être utile pour mes petits programmes.
Merci!

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.