Bonjour à tous,
Le but de mon code est de lire dans une ligne d'un fichier des formules qui sont séparées entre elles par des tabulations. Ces formules pouvant contenir des espaces, je ne peux utiliser de flux de string. Je suis donc obligé de lire caractère par caractère, et de détecter une tabulation ou bien la fin de la ligne pour pour rassembler les caractères lus dans une string qui représente la formule.
Voici 2 versions de mon code :
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 string temp; string ligne; char c; getline(fichier, ligne); istringstream iss(ligne); while (c = iss.get()) { if (c == '\t') { cout << " " << temp << " "; tableau_formules.push_back(temp); temp.clear(); } else if (c == '\n') { cout << " " << temp << " "; tableau_formules.push_back(temp); temp.clear(); break; } else { cout << c; temp.push_back(c); } }A chaque fois, mon code n'arrive pas à détecter la fin et continue à écrire (des espaces) sans fin sur la ligne de commande.
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 while ((c = fichier.get()) != '\n') { cout << c << " "; temp.clear(); temp.push_back(c); while ((c = iss.get()) != '\t') { cout << c; if (c == '\n') break; else temp.push_back(c); } cout << temp << " "; tableau_formules.push_back(temp); }
Merci de m'aider.
Partager