Ios::eof

ssmint Messages postés 43 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 5 décembre 2008 - 12 juil. 2007 à 00:11
Servlax Messages postés 14 Date d'inscription samedi 11 septembre 2004 Statut Membre Dernière intervention 20 juillet 2007 - 20 juil. 2007 à 23:20
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

Yunchi Messages postés 100 Date d'inscription lundi 30 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
12 juil. 2007 à 03:29
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
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
12 juil. 2007 à 13:56
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...
0
Servlax Messages postés 14 Date d'inscription samedi 11 septembre 2004 Statut Membre Dernière intervention 20 juillet 2007
20 juil. 2007 à 23:20
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.
0
Rejoignez-nous