[C++] lire un fichier texte ligne par ligne
Résolu
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:
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!
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:
- Lire dans un fichier c++
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire un fichier epub - Guide
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
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
comme l'a dit Bussy14, si ca peut en aider certains...
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...