Problème de lecture de fin de ligne en caractère par caractère
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:
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);
}
} |
Code:
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);
} |
A chaque fois, mon code n'arrive pas à détecter la fin et continue à écrire (des espaces) sans fin sur la ligne de commande.
Merci de m'aider.