Bonjour,
Je débute le cours sur la programmation C++. J’apprends que std::cin renvoie une valeur qui peut être traitée par un if (ou autres itérateurs) afin de gérer les erreurs de saisie. Naïvement j’ai créé un booléen "saisie" et j’ai fait le code ci-dessous. Mais ça ne compile pas. Par contre si on supprime la variable "saisie" et qu’on met "std::cin » age" dans les parenthèse du if, ça fonctionne. Ma question est pourquoi?
Ma première réponse est que cin ne renvoie pas un booléen et que if est capable de traiter d’autres types. Quel est le type renvoyé par cin? En allant ici : https://en.cppreference.com/w/cpp/io/cin , je trouve le prototype de cin qui est : "extern std::istream cin;". du coup de déclare "saisie" comme étant de type extern std::istream et dans les parenthèses du if je mets la variable "saisie". Mais ça ne fonctionne. Je ne comprends donc pas ce que renvoie std::cin. Est-ce que quelqu’un peut m’éclairer? D’avance merci.
int main(){
std::cout << "Donnez votre âge : " << std::endl;
int age {};
extern std::istream saisie;
saisie = std::cin >> age;
if(saisie)
std::cout << age << std::endl;
else {
std::cout << "erreur de saisie" << std::endl;
std::cin.clear();
std::cin.ignore(255,'\n');
}
return 0;
}