Lecture d'un fichier

Résolu/Fermé
Magicalcaptnn Messages postés 9 Date d'inscription jeudi 3 décembre 2015 Statut Membre Dernière intervention 14 janvier 2016 - Modifié par Magicalcaptnn le 12/01/2016 à 16:29
Magicalcaptnn Messages postés 9 Date d'inscription jeudi 3 décembre 2015 Statut Membre Dernière intervention 14 janvier 2016 - 14 janv. 2016 à 13:36
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
A voir également:

1 réponse

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
Magicalcaptnn Messages postés 9 Date d'inscription jeudi 3 décembre 2015 Statut Membre Dernière intervention 14 janvier 2016
14 janv. 2016 à 13:36
Merci beaucoup, voici exactement ce que je cherchais !
Sujet résolu.
0