Cela semble bizarre:des questions cin C++
int main(int argc, char* argv[]) {
cout << "function main() .." << '\n';
char ch = 0;
double number_value=1.1;
cin >> ch;
cin.putback(ch);
cin >> number_value;
cout << "1 .. " << " " << cin.good() << " " << number_value << '\n';
cin >> number_value;
cout << "2 .. " << " " << cin.good() << " " << number_value << '\n';
return 0;
}
Si je entrez les données suivantes:
7a 1
Je reçois le texte suivant:
fonction main()..
7a 1
1 .. 1 7
2 .. 0 0
Je comprends le:
1 .. 1 7
mais pourquoi la variable NUMBER_VALUE est 0. cin.good()
montre l'échec donc rien aurait lu et la valeur NUMBER_VALUE de la mission précédente demeurerait. J'attends la valeur de 7.
Vous pouvez utiliser std :: boolalpha pour transformer ces 1 et 0 en vrai et faux. –
Notez que 'cin.good()' n'est pas la même chose que 'bool (cin)', et vous devriez préférer ce dernier lors de la vérification du succès de l'extraction. L'idiome commun de 'if (cin >> var)' fonctionne de cette façon aussi. –
Quel compilateur utilisez-vous? –