Salut à vous !

J'essaie de faire une fonction qui a plus ou moins pour but de lire un fichier de filtre. Pour cela j'utilise istringstream afin de pouvoir séparer les mots. Normalement j'arrive à m'en servir sans problème. Mais là il se passe un truc assez zarbi : selon les lignes, mon istringstream semble avoir une attaque cérébrale ou un truc du genre, et me sors plusieurs fois la même ligne à l'affichage. Pire encore : lorsque j'essaie de lire les mots, j'ai l'impression que mon istringstream ne récupère jamais le premier mot de la ligne, ce qui est mine de rien assez problématique.

Voilà ma fonction : c'est en réalité un constructeur pour une classe qui prend une liste de filtres en paramètres.

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
43
44
45
46
47
48
49
50
51
52
53
54
55
FilterList::FilterList(string fileName)
{
    ifstream file(fileName.c_str(), ios::in);
    string line, str;
    string args[2];
    bool lecture = false;
    if (!file)
    {
        cerr << "Erreur de lecture du fichier de filtre" << endl;
    }
    while (getline(file, line))
    {
        //cout << line << endl;
        istringstream ss(line);
        while (getline(ss, str, ' '))
        {
            //cout << lecture << endl;
            //cout << "istringstream" << endl;
            cout << ss.str() << endl;
            if (str != "")
            {
                //cout << "Lecture ligne non vide" << endl;
                ss >> args[0] >> args[1];
 
                //cout << args[0] << endl;
                //cout << args[1] << endl;
 
                if (args[0] == "###")
                {
                    if (!lecture)
                    {
                        //cout << "lecture = true" << endl;
                        lecture = true;
                        continue;
                    }
                    else
                    {
                        //cout << "lecture = false" << endl;
                        lecture = false;
                        continue;
                    }
                }
 
                if (lecture)
                {
                    cout << args[0] << " " << args[1] << endl;
                    filters.push_back(args[1]);
                    cout << filters.at(filters.size()-1) << endl;
                }
            }
        }
        ss.clear();
    }
    file.close();
}
Et voilà ce à quoi ressemble le fichier que je dois lire :

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
De: stats-sna-rp@regis-dgac.net de la part de stats-sna-rp [stats-sna-rp@regis-dgac.net]
Envoyé: mardi 23 juin 2015 10:58
À: olivier brillant
Objet: Tr : Demande VISTA Survols de Commune
 
 
-------- Message d'origine --------
De: stats-sna-rp@regis-dgac.net
Date: 23 juin 2015 10:47:37
Objet: Demande VISTA Survols de Commune
A: stats-sna-rp@regis-dgac.net
 
 
### VISTA-SC ### CERCLE ### JOURNEE ORDINAIRE ### SUPERPOSITION DE TRACES ###
 
 
 
EMETTEUR olivier.brillant@regis-dgac.net
 
MODE JOURNEE_ORDINAIRE
 
nb_indicatifs 2
 
indicatif_1 AF*
 
indicatif_2 VG
 
_choix_props OUI
 
_choix_jets OUI
 
_choix_heli OUI
 
_choix_typa_inconnus OUI
 
_choix_heavy OUI
 
_choix_light OUI
 
_choix_medium OUI
 
_fl_mini 001
 
_fl_max 60
 
_tracer_lignes_points Lignes
 
_choix_cercle_echelle OUI
 
_deborder_cercle NON
 
_FOND_CARTO aucun
 
_TRACER_DEPARTEMENT NON
 
_TRACER_COMMUNES OUI
 
_TRACER_TXT_VILLES NON
 
_echelle CDG5
 
_mode_comptage CERCLE
 
_nb_traj_max toutes
 
Date_1 01/06/2015
 
Date_2 02/06/2015
 
Date_3 03/06/2015
 
Date_4 04/06/2015
 
Date_5 05/06/2015
 
Date_6 06/06/2015
 
Date_7 07/06/2015
 
Date_8 08/06/2015
 
Date_9 09/06/2015
 
Date_10 10/06/2015
 
Date_11 11/06/2015
 
Date_12 12/06/2015
 
Date_13 13/06/2015
 
Date_14 14/06/2015
 
Date_15 15/06/2015
 
_nb_superposition 15
 
_X_lambert1 603716
 
_Y_lambert1 2414730
 
nom_ville_long OL
 
_rayon 5
 
_LFPO_DEP OUI
 
_LFPO_ARR OUI
 
_LFPN_DEP NON
 
_LFPN_ARR NON
 
_LFPV_DEP NON
 
_LFPV_ARR NON
 
_LFPG_DEP OUI
 
_LFPG_ARR OUI
 
_LFPB_DEP NON
 
_LFPB_ARR NON
 
_LFPT_DEP OUI
 
_LFPT_ARR OUI
 
_AUTRE_DEP NON
 
_AUTRE_ARR NON
 
 
REQUETE VISTA_CERCLE_L2E.ilv
 
flag_une_couleur_par_indicatif NON
 
_flag_masquer_indicatif NON
 
_new_mode_arr_dep OUI
 
_mode_fichiers_z NON
 
_fichiers_z_format_geo NON
 
_mode_eff_polylines_si_pas_comptee OUI
 
_mode_gommer_polylines_si_pas_comptee NON
 
_mode_nuage_de_points NON
 
_mode_superposition OUI
 
_mode_images_separees NON
 
_mode_un_jour_une_couleur_de_plot NON
 
_toggle_modulo_fl_avions NON
 
_toggle_modulo_indicatif NON
 
_toggle_modulo_fl_hhmmss_avions NON
 
_modulo_fl_avions 10
 
MODE_JOUR_NUIT MODE_JOUR_NUIT
 
VAL_JOUR_NUIT PAS_FILTRE_HEURE_ARRIVEE
### FIN MESSAGE ###
G_Version = 2015.03
WLogicielMail = ORLY_CMIT_TOUR.
Une idée ? :/

Merci d'avance pour votre réponse.