Je suis relativement nouveau à la programmation et j'expérimentais quelques codes du livre de Bjarne sur les principes et la pratique en utilisant C++.pourquoi le besoin de cin.unget() dans ce contexte, C++?
Je voudrais savoir pourquoi est-il nécessaire de cin.unget()
lorsque l'entrée n'est pas un nombre entier alors que cin.unget()
n'est pas nécessaire lorsque l'entrée est un nombre entier?
Notez que ce code n'est pas parfait car l'auteur tente simplement d'illustrer certains pointeurs sur l'entrée et la sortie des utilisateurs. Le code est le suivant:
void skip_to_int()
{
if (cin.fail()){
cin.clear();
for (char ch; cin>>ch;) { // throw away non-digits
if (isdigit(ch) || ch=='-') {
cin.unget();
return;
}
}
}
error("no input");
}
int main(){
cout << "Please enter an integer in the range 1 to 10(inclusive):\n";
int n = 0;
while (true) {
if (cin>>n) { // we got an integer; now check it
if (1<=n && n<=10) break;
cout << "Sorry " << n
<< " is not in the [1:10] range; please try again\n";
}
else {
cout << "Sorry, that was not a number; please try again\n";
skip_to_int(); }
}
}