c'est mauvais. le booléen est inutile, tu ne gères aucune erreur
Code :
- for( ; ; )
- {
-
- cout << "2) saisissez un entier : " << flush;
-
- string s;
-
- if(getline(cin, s))
- {
- istringstream is(s);
-
- if( is >> i && i>1)
- {
- break;
- }
- }
- else if(cin.bad())
- {
- cerr << "Erreur d\'E/S" << endl;
- return 1;
- }
- else if (cin.eof())
- {
- cout << endl << "EOF, Bye" << endl;
- return 0;
- }
- }
|
c'est pourtant pas compliqué !
je montre 2 techniques et les deux sont sures et garantissent que si une erreur se produit, elle sera détectée.
mais par pitié vire ce pauvre booléen qui perd d'ailleurs toute ca cridibilité avec le while(inOk==false)
si tu veux gérer les E/S suit ma méthode, sinon ça ne sert à rien. soit on gère les erreurs, soit on ne gère pas. ton programme, il peut ce mettre à boucler indéfininment sans que tu comprennes pourquoi
edit : la méthode avec les stringstream étant moins bonne puisqu'on mémorise tous les caractères dont justement on n'a cure
Message édité par Taz le 06-12-2003 à 19:24:41