/* un exemple de programme C++ gérant les erreurs de saisie Exemple conçu pour les auditeurs du CNAM Montpellier - 1999/00 Ph. Reitz (reitz@lirmm.fr) Ce programme exploite les méthodes suivantes : bool istream::fail() const => vrai si une erreur est survenue lors d'une lecture void istream::sync() => vide les caractères en attente */ #include <iostream> using namespace std; /* essayer ce programme dans les situations suivantes ; à chaque fois qu'une demande de saisie se présente, frapper (tous les cas de figure sont explorés - du moins, les plus classiques... -) : 12 1 2 3 4 100 c 200c c 0 */ main() { cout << "Test des méthodes de la classe istream pour rattraper une" << " erreur de saisie." << endl; cout << "La saisie du nombre 0 arrête le programme." << endl; int i; do { cout << "Saisie d'une valeur entière : "; cin >> i; if (cin.fail()) { cerr << "Erreur de saisie. Tous les caractères restants sont ignorés." << endl; cin.sync(); // vidage du tampon d'entrée [caractères en attente de lecture] cin.clear(); } else { cout << "Valeur entière lue = " << i << endl; } } while (i!=0); };