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 : 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';
}
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.