istream : lecture de fin de fichier
Bonjour,
J'ai un petit soucis lors de la lecture d'un fichier texte, qui ne se fini pas par un saut de ligne.
je lis le fichier ligne par ligne avec getLine (= istream::getLine(...) ), mais en arrivant sur la derniere ligne, le EOF en fin de ligne fait retourner false et donc je perd le contenu de la derniere ligne...
Je cherche donc à récuperer la derniere ligne sans le EOF.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
is.seekg (0, std::ios::beg);
int pos = is.tellg(); //memorise la position avant le read
if(!is.getline(cline,249))//return false if EOF
{
is.seekg(pos); //revient à la position avant l'echec de read
char c;
c = (char)is.get();
if(c == EOF)
return false;
unsigned int i=0;
for(i=0 ; i<249 ; ++i)
{
if(c != EOF)
cline[i] = c;
else
break;
c = (char)is.get();
}
cline[i+1] = '\n';
} |
Mais rien à faire ... le istream a atteint le bout de fichier et ne veux pas revenir en arriere pour que je puisse lire manuellement...
Je tiens à préciser que meme si ajouter un saut de ligne dans le fichier est fesable, ce n'est pas une solution algorithmique a long terme...
Merci.