[C++] lire un fichier texte ligne par ligne

Résolu/Fermé
Bussy14 Messages postés 45 Date d'inscription dimanche 29 octobre 2006 Statut Membre Dernière intervention 4 avril 2013 - 22 nov. 2006 à 09:32
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 8 févr. 2009 à 03:53
Bonjour tout le monde,

J'ai recherché quelque temps sur le forum un moyen de lire un fichier ligne par ligne en c++. J'ai trouvé plusieurs façon, mais aucune ne marchant vraiment, ou en tout cas, soit pas de la façon dont je voulais, soit à cause de mon compilateur (fort possible).
En faisant un mix de plusieurs sources différentes et quelques autres sites de références en c++ et en y ajoutant ma touche personnelle, j'ai fini par trouver un moyen qui fonctionne plutôt bien, en tout cas sur mon compilateur (Metrowerks CodeWarrior), voici, pour ceux qui pourraient en avoir besoin, mon code:

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

void main() {
    fstream fichier("test fichier.txt");
    if ( !fichier ) {               // si le fichier n'est pas trouvé
        cout << "fichier inexistant";
    } else {                        // sinon
        bool continuer = true;      // indicateur de fin de fichier
        while( continuer ) {	
            string ch;              // chaine contenant une ligne du fichier
            fichier >> ch;	    // ranger une ligne dans ch
            if ( ch != "" )         // si la ligne n'est pas vide faire
                cout << ch << endl; //   afficher celle-ci
             else                   // sinon
                continuer = false;  //   sortir de la boucle de lecture
        }
    }
}

Pour ceux qui savent comment tester si la fin du fichier est atteinte, ou qui ont un meilleur moyen à me proposer, je suis ouvert à toute discussion, je préviens, je débute en C++.


voici en plus une petite liste de sites bien utiles:
https://en.cppreference.com/w/
http://www.cplusplus.com/
https://c.developpez.com/
et pour ceux qui passent comme moi de Java à C++:
http://www.infres.enst.fr/~elc/C++/
http://www-etud.iro.umontreal.ca/~duranlef/doc/cpp_pour_javiste/
https://horstmann.com/ccj2/ccjapp3.html (en anglais)

En espérant que ça pourrait être utile à quelqu'un d'autre qu'à moi.

Bonne prog à tous!
A voir également:

6 réponses

alors voila je sais que ce post est résolu, est ce depuis plus d'un an...
mais j'ai touvé une methode assez efficace je pense pour pouvoir lire un fichier ligne par ligne

je vous fais part de mon code:
j'utilise les vector car a la base on ne sait pas quelle taille a le fichier, et j'ai besoin de stocker le contenu dans un tableau pour mon programme

#include <fstream>
#include <vector>

using namespace std;

int main() {

    fstream fichier("monde1.txt");
    vector <string> monTableau;

    if ( !fichier )
        cout << "fichier inexistant";
    else
    {
        bool continuer = true;

        while( !fichier.eof() )
        {
            monTableau.push_back("");//creation d'une ligne vide

            getline(fichier, monTableau.back());//lecture d'une ligne du fichier

            int ligne = monTableau.size() - 1;//je recupere la taille du tableau (-1 pour la ligne 0)

            if(monTableau[ligne].empty())//si la ligne est vide
                monTableau.pop_back();//on la retire du tableau
        }

        cout << "nombre de lignes : " << monTableau.size() << endl;//j'affiche le nombre de lignes pour test
    }
    return 0;
}


comme l'a dit Bussy14, si ca peut en aider certains...
22