Ios::eof

Signaler
Messages postés
43
Date d'inscription
mercredi 30 novembre 2005
Statut
Membre
Dernière intervention
5 décembre 2008
-
Messages postés
14
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
20 juillet 2007
-
Bonsoir,
mon dernier petit souci en date en matière de C++, est la fonction eof(). Voici le code :




#include
#include <fstream>
#include <string>
using namespace std;





int main () {
  string line;
  fstream file("test.txt", ios::in);





  if (!file.is_open())
  {
     cout<<"Pas de fichier!!!"<<endl;
     system("PAUSE");
     return EXIT_SUCCESS;
  }
  

  while (!file.eof())
  {
      getline (file,line);
      cout<<line<<endl;
  }
   
  file.seekg(ios::beg);

  while (!file.eof()) //egale à 1 alors que seekg à remis le pointeur au début.!?
  {
      getline (file,line);
      cout << line << endl;
  }
  file.close();
 
    system("PAUSE");
    return EXIT_SUCCESS;
}





Ce code est censé afficher 2 fois le contenu du fichier, mais aprés l'avoir afficher une première fois, je fais  file.seekg(ios::beg); pour revenir au début du fichier mais la fonction file.eof() renvoie 1 et non zéro ... Je ne suis pourtant pas en fin de fichier... (l'apel de file.tellg() renvoie 0..)
Bref, ce doit être un truc tout con comme souvent.
Merci d'avance ++







 

3 réponses

Messages postés
100
Date d'inscription
lundi 30 octobre 2006
Statut
Membre
Dernière intervention
14 avril 2009

si file.eof() te renvoie 1 et non 0 c'est que t'en fin de fichier donc il doit y avoir un probleme avec le file.seekg(ios::beg) je penses
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Salut,

Ca a plutôt l'air d'être du :
file.seekg(0, ios::beg);

Avec un seul argument, il attend un entier, alors que tu lui donnes une direction...
Messages postés
14
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
20 juillet 2007

Le problème doit bien venir du seekg... Mais il est difficile de juger ce cas puisqu'on ne connaît pas les détails concernant le fichier.

Il reste la possibilité d'utiliser un autre fstream, simplement.