rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

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

Bussy14, le mercredi 22 novembre 2006 à 09:32:49
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:
http://www.cppreference.com/
http://www.cplusplus.com/
http://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/
http://www.horstmann.com/ccj2/ccjapp3.html (en anglais)

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

Bonne prog à tous!
Répondre à Bussy14  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
mamiemando, le mercredi 22 novembre 2006 à 14:21:02
Répondre à mamiemando

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Bussy14, le mercredi 22 novembre 2006 à 17:45:11
Salut!

Merci oui, mon code provient principalement de ce site, mais je sais pas pourquoi, quand j'essayais hier ça fonctionnait pas, enfin faut dire que chez moi il était 3-4h du matin, et j'étais assez fatigué, il me fallait juste une méthode qui lit un fichier ligne par ligne, et j'avais un bug dans mon IDE de merde (oui oui, n'essayez jamais CodeWarrior, mais de toute façon vous n'en n'avez sûrement jamais entendu parler! La plupart des étudiants qui suivent le cours se plaignent... enfin bon, n'allons pas trp cracher sur mon prof qui est à l'origine du compilateur! ^.^). Et donc j'ai supposé, après moult recherches et googlisages (faudrait officialiser un verbe pour décrire la recherche dans google) que ca aurait dû fonctionner, et que encore une fois, mon IDE me mettait dans la -biip-.
Mais arrivé "tout frais" (ou presque) ce matin, je réessaie avec un getline, et ca fonctionne... allez savoir ce que j'avais écrit hier... p-e un problème de type de ma variable fichier...

Donc l'erreur était de moi, désolé, la fatigue et le stress engendré par une date de remise proche (aujourd'hui lol) m'ont fait faire des bêtises, je ne recommencerai plus!

Merci encore à toi!
Répondre à Bussy14

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mamiemando, le jeudi 23 novembre 2006 à 01:11:50
Pas de problème ;)
Répondre à mamiemando

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mehdi, le mercredi 12 décembre 2007 à 17:07:35
n'est ce pas couteux ne mémoire de lire un fichier.txt que de passer le contenu d'un fichier en paramètre
Répondre à mehdi

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 mamiemando, le mercredi 12 décembre 2007 à 20:12:06
SI mais lire un fichier c'est lent, car il faut le parser (le lire, extraire les morceaux intéressants, les mettre dans une structure de donnée). En particulier un fichier texte n'est pas pratique à manipuler pour stocker de l'information au cours de l'exécution d'un programme.

D'un point de vue il faut donc voir le volume ainsi généré. A priori il est de très inférieur à la taille du fichier texte puisque par nature une structure C/C++ est "binaire", et ne "gaspille" pas de place comparé à un fichier texte. Ca suppose évidemment que la structure en question ne soit pas une chaîne de caractère contenant tout le fichier :-) Comme les fichiers textes sont généralement petits, ce n'est donc pas gênant.

A titre indicatif quand un fichier texte devient trop volumineux on a recours à des structures serialisées qui sont, pour faire simple, le contenu binaire qui sera directement chargé en mémoire. Cette technique permet donc de réduire fortement le volume d'un fichier d'entrée, et surtout son temps de chargement qui est généralement long.

En espérant avoir répondu à ta question...
Répondre à mamiemando
Logiciels pertinents trouvés dans les téléchargements
Télécharger Switch Sound Format Converter 1.05Switch Sound Format Converter - Switchest un convertisseur de formats audio pour Windows ou Mac, capable de convertir des fichiers audio à partir de...Catégorie: Conversion audio
Licence: Freeware/gratuit
Télécharger PDF Creator 0.9.5PDF Creator - PDF Creator est un outil gratuit permettant de créer des PDF à partir de presque n'importe quelle application capable...Catégorie: PDF
Licence: Open Source
Télécharger MediaInfo 0.7.7.4MediaInfo - MediaInfo fournit la liste des codecs nécessaires ainsi que des informations techniques sur vos fichiers vidéo et audio. ...Catégorie: Codecs
Licence: Open Source
Télécharger PSPad 4.5.2PSPad - PSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS,...Catégorie: Développement
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [C++] lire un fichier texte ligne par ligne »