Bien le bonjour,
Voici deux bouts codes, pratiquement identique.
Le premier fonctionne (il est mignon tout plein)
Le deuxième est une horrible fonction qui fait rien que de m'embêter.
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 void f_lit_les_entrees_du_dico (vector <c_objet_dico> & to_entree_dico) { ifstream fichier ("dico.txt", ios::in); string s_ligne; string s_ligne_precedente; if (fichier) { while (getline (fichier, s_ligne)) { if (s_ligne_precedente == ".....") { c_objet_dico nouveau_mot; nouveau_mot.s_mot_dico = s_ligne; nouveau_mot.en_position = fichier.tellg(); to_entree_dico.push_back (nouveau_mot); } s_ligne_precedente = s_ligne; } } else { cerr << "Impossible de lire les definitions" << endl; cerr << "f_lit_les_entrees_du_dico" << endl; } fichier.close (); }
Question: Pourquoi ? oui pourquoi la deuxième fonction plante le programme. La seule chose qui se passe en plus c'est que j'utilise la variable g pour enregistrer tellg (), et qui sert ensuite à initialiser nouveau_mot.en_position.
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 void f_lit_les_entrees_du_dico (vector <c_objet_dico> & to_entree_dico) { ifstream fichier ("dico.txt", ios::in); string s_ligne; string s_ligne_precedente; if (fichier) { int g = 0; while (getline (fichier, s_ligne)) { if (s_ligne_precedente == ".....") { c_objet_dico nouveau_mot; nouveau_mot.s_mot_dico = s_ligne; nouveau_mot.en_position = g; to_entree_dico.push_back (nouveau_mot); } g = fichier.tellg(); s_ligne_precedente = s_ligne; } } else { cerr << "Impossible de lire les definitions" << endl; cerr << "f_lit_les_entrees_du_dico" << endl; } fichier.close (); }
Dubitatif je suis !
Bien à vous.
Partager