Bonjour à tous,
j'ai le code suivant:
si j'entre 12[return], 13[return] et ensuite [Ctrl D] lors du premier input, puis j'entre 3.14[return] pour le deuxième, alors j'ai cette sortie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 #include <string> #include <vector> #include <iostream> using namespace std; istream& read_hw(istream& in, vector<double>& hw) { if (in) { hw.clear(); double x; while (in >> x) hw.push_back(x); in.clear(); } return in; } void test(istream& in, char c) { if (in) { cout << "good " << c << endl; } else { cout << "bad " << c << endl; } } int main() { vector<double> homework; cout << "lecture vecteur" << endl; test(read_hw(cin,homework),'1'); test(cin,'2'); cout << "lecture double" << endl; double xy; cin >> xy; test(cin,'3'); return 0; }
par contre si je fait 12[return], 13[return] et m[return], le deuxième input ne semble pas passer, et j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 lecture vecteur 12 13 good 1 good 2 lecture double 3.14 good 3
je ne comprend pas ce qu'il se passe :/ lors du deuxième run, le statut erreur de cin est à failbit lorsque j'entre m[return], mais le in.clear() à la fin de read_hw n'est-il pas censé remettre le statut erreur à 0? pourquoui à l'exécution l'instruction cin >> xy ne passe pas?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 lecture vecteur 12 13 m good 1 good 2 lecture double bad 3
Partager