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.
Mais rien à faire ... le istream a atteint le bout de fichier et ne veux pas revenir en arriere pour que je puisse lire manuellement...
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 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'; }
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.
Partager