Lecture de la derniere ligne dans un fichier texte ouvert avec ifstream
indusine
Messages postés5Date d'inscriptiondimanche 18 juillet 2004StatutMembreDernière intervention20 août 2004
-
21 juil. 2004 à 13:38
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 2004
-
22 juil. 2004 à 18:52
Bonjours à tous,je voudrais lire la derniere ligne d'un fichier texte ouvert en lecture avec ifstream.
Dans mon application(MFC AppWizard exe)Visual C++,j'ouvre ce fichier en ecriture avec ofstream dans d'autre
evenements.
Ce fichier comporte l'etat des boutons.
Mais je dois pouvoir ecrire dans le fichier texte hors de mon application et pouvoir interpreter son contenu
dans l'application.
Voici mon code et ce que j'ai obtenu avec est une chaine vide.
void CTtDlg::OnViewFile()
{
char ligne[30];
// ouverture en lecture.
// ios::app pointeur au debut du fichier
ifstream train("fic.txt",ios::app);
AfxMessageBox("ligne par ligne");
//Affichage du contenu du fichier ligne par ligne
while (train.getline (ligne,sizeof(ligne)));
AfxMessageBox(ligne);
//la derniere ligne affichée est une chaine vide je voudrai atteidre la ligne d'avant.
train.close(); // fermeture du fichier
}
j'ai essayé de faire un seek de la fin puisque je connais taille des chaines ecrites dans le fichier
//train.Seek(30,STREAM_SEEK_END,NULL);
mais je n'ai pas trouvé de méthode supporté par ifstream
Il existe une methode seekg(nbr octets) qui fait un saut du début le nbr octets étant
la taille du fichier-30
//train.seekg(taille-30);
mais je n'ai trouvé aucun moyen de calculer la taille avec ifstream
TRES IMPORTANT
je dois pouvoir conserver cette ligne dans une chaine de charactéres
//train.getline (ligne,sizeof(ligne));
avec getline je peux conserver la ligne lu dans la chaine ligne.
Merci d'avance.
indusine
Messages postés5Date d'inscriptiondimanche 18 juillet 2004StatutMembreDernière intervention20 août 2004 22 juil. 2004 à 08:52
Effectivement je me suis gourrer. ios::app pointe à la fin du fichier.j'ai enlever ce ios::app.
je lis le contenu du fichier dans le while .mais apres j'ai besoin d'effectuer des opérations de comparaison sur la variable ligne mais je retrouve une variable qui contient une chaine vide.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 22 juil. 2004 à 18:52
pense à utiliser les nouveaux flux et essay d'orienter ton code plus c++, c'est à dire en utilisant le type string qui est la pour te faciliter la tache
tu peux essayer mon code tres simple et qui fonctionne
autre chose :
train.close(); // fermeture du fichier
c'est inutile, surtout avant la fin du bloc, le destructeur appel lui meme la methode close()