Lecture d'un fichier

Résolu
Magicalcaptnn Messages postés 9 Statut Membre -  
Magicalcaptnn Messages postés 9 Statut Membre -
Bonjour,

J'ai actuellement un problème lors de la lecture d'un fichier. Apprenant le C++, j'ai voulu que mon programme lise un fichier caractère par caractère puis ligne par ligne, malheureusement il n'effectue pas la deuxième lecture. Voici mon code:

 #include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ofstream fileW;
    fileW.open("text.txt");

    if(fileW)
    {
        for(int i = 0; i < 5; i++)
        {
            fileW << "Test fichier" << endl;
        }
        fileW.close();
    }

    else
    {
        cout << "FATAL ERROR: Can not open the file" << endl;
    }

    ifstream fileR;
    fileR.open("text.txt");

    if(fileR)
    {
        char c;
        string line;

        while(fileR.get(c))
        {
            cout << c;
        }

        cout << fileR.tellg() << endl;
        fileR.seekg(0, ios::beg);

        while(getline(fileR, line))
        {
            cout << line << endl;
        }

        fileR.close();
    }

    else
    {
        cout << "FATAL ERROR: Can not open the file" << endl;
    }

    return 0;
}
 

J'espère que vous pourrez m'aider.
Merci d'avance.
Cordialement,
MagicalCaptn

1 réponse

  1. Utilisateur anonyme
     
    Bonsoir,

    Voici un code qui, à mon avis, fait ce que vous cherchez.

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    
    int main()
    {
        string const nomC("text.txt");
        ofstream fileW(nomC.c_str());
    
        if(fileW)
        {
            fileW << "Test fichier" << endl;
        }
        else
        {
            cout << "FATAL ERROR: Cannot open the file." << endl;
        }
           ifstream fileR; //Un flux vide
    
       if(fileR)
       {
          fileR.open("text.txt"); //On ouvre le flux text.txt pour permettre au programme de lire dedans
          char c;
          string ligne;
          while(fileR.get(c))
          {
             cout << c; //Par caractère
          }
          fileR.close(); //Attention : on referme pour libérer la mémoire, sinon getline() ne pourra pas le lire, d'où votre erreur
          fileR.open("text.txt"); //On rouvre, et on lit par lignes
          while(getline(fileR, ligne))
          {
              cout << ligne<< endl; //Par lignes
          }
          fileR.close(); //On referme
       }
       else
       {
          cout << "FATAL ERROR: Cannot open the file." << endl;
       }
        return 0;
        /*
        * Ainsi, les deux sont bien affichés, pour en avoir le coeur net, ajoutez un "endl;" à l'affichage par caractères
        */
    }
    


    EchoIsON.
    0
    1. Magicalcaptnn Messages postés 9 Statut Membre
       
      Merci beaucoup, voici exactement ce que je cherchais !
      Sujet résolu.
      0