ouverture fichier texte

ouverture fichier texte - C++ - Programmation

Marsh Posté le 23-12-2010 à 17:34:14    

plop,
 
je voudrais ouvrir un fichier texte afin de recuperer des info a l'interieur,
tous se passe bien durant la premiere ouverture, mais la seconde foire
 
j'ai taté un peu avec des cout et du tellg(), et j'ai vu que lors de la premiere ouverture
le curseur par de 0, alors que lors de la deuxiemme, il part de -1 et ne rentre pas dans mon second while
 
j'ai esseyer de le remettre a 0 mais rien a faire, apres la ligne tellg me retourne toujours -1
 

Code :
  1. void convertFileToMat(char *name, int ***mat)
  2.    {
  3.    //la matrice est conforme a la page 3  
  4.  
  5.    //parcourir tout le fichier afin de definir le nombre de ligne
  6.   int counter = 0;
  7.   string line;
  8.   ifstream myParaFile (name);//creation et ouverture en meme temps
  9.   if (!myParaFile.is_open())
  10.      {
  11.      //impossible d'ouvrir
  12.      }
  13.   else
  14.      {
  15.        while ( !myParaFile.eof() )
  16.           {
  17.           getline (myParaFile,line);
  18.           cout <<line<< endl;
  19.           counter++;
  20.           }
  21.       myParaFile.close();
  22.      }
  23.    cout << "\n\nil y a "<<counter<<" lignes"<<"\ncreation de la matrice\n\n";
  24.  
  25.    //creation de la matrice
  26.  
  27.    //remplir la matrice par algo de cassage
  28.    myParaFile.open(name); //ouiverture de l'objet
  29.    cout << "ouverture fichier\n";
  30.    //ici le curseur dde positon est a -1 et a donc besoin d'etre remit a 0
  31.    myParaFile.seekg(0);
  32.    cout << "position = "<<myParaFile.tellg()<<"\n";
  33.    if (!myParaFile.is_open())
  34.      {
  35.      //ouverture impossble
  36.      }
  37.    else
  38.      {
  39.        while ( !myParaFile.eof() )
  40.           {
  41.           getline (myParaFile,line);
  42.           cout <<line<< endl;
  43.           //algo de cassage ici
  44.           counter++;
  45.           } 
  46.       myParaFile.close();
  47.      }
  48.    
  49. }


 
des idées?  
merci ;)

Reply

Marsh Posté le 23-12-2010 à 17:34:14   

Reply

Marsh Posté le 23-12-2010 à 18:01:41    

C'est le même fichier, pourquoi tu ne fais pas juste un seek avant ta deuxième lecture?


---------------
sheep++
Reply

Marsh Posté le 23-12-2010 à 18:37:12    

pas bete
 
mais raté :p, la position va bien a 0 mais je ne rentre toujours pas dans le while
 
c'est mes debut en programmation objet, par hazard, le flag eof() aurit pas besoin d'etre resetter?
 
###EDIT
 
he ben si :D, myParaFile.clear();
par contre, si j'avais ouvert un autre fichier texte, j'aurais du faire un clear quand meme,


Message édité par sliders_alpha le 23-12-2010 à 18:44:48
Reply

Marsh Posté le 30-12-2010 à 15:23:31    

eof() il ne faut pas l'utiliser comme cela: http://cpp.developpez.com/faq/cpp/ [...] CHIERS_eof
 
Ca c'est mieux:

Code :
  1. while ( getline (myParaFile,line) )  {
  2.      cout <<line<< endl;
  3.      counter++;
  4. }


 
Et cela réglera surement tes pb plus loin...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed