Bien le bonjour,

Voici deux bouts codes, pratiquement identique.
Le premier fonctionne (il est mignon tout plein)
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 ();
}
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
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 ();
}
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.

Dubitatif je suis !

Bien à vous.