Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

[c++] lecture dans un fichier texte



  1. #1
    bob la truite

    [c++] lecture dans un fichier texte


    ------

    Bonjour!
    J ai un fichier texte, et je voudrai pouvoir lire la première ligne, et la stocker dans une variable, puis ensuite lire la seconde, la stocker dans une aitre variable,etc..quelq'un peut-il m aider?

    -----

  2. Publicité
  3. #2
    Tony93330

    Re : [c++] lecture dans un fichier texte

    Bonjour,

    Il faut que tu commences par penser l'algorythme que tu veux créer.
    - Ouvrir le fichier,
    - Compter le nombre de lignes (dimensionnement de la variable en tableau),
    - Déclarer et dimensionner la variable,
    - Ouverture d'une boucle,
    - Lecture de la 1ère ligne,
    - Stockage dans la variable (0)
    - incrément de la boucle
    - Retour...

    A toi de traduire en C++.

    Bonne journée.
    Occupez vous de mes amis. Pour ce qui est de mes ennemis, je m'en charge.

  4. #3
    yostral

    Re : [c++] lecture dans un fichier texte

    Ou alors tu peux créer une classe ne contenant qu'une seule variable, string, et instancier un nouvel objet de cette classe à chaque nouvelle ligne. Ça t'évite de compter le nombre de lignes avant.
    Quand tout le reste a échoué, lisez le mode d'emploi.

  5. #4
    bob la truite

    Re : [c++] lecture dans un fichier texte

    Oui mais au niveau de la syntaxe ca donnerait quoi?

  6. A voir en vidéo sur Futura
  7. #5
    r0d

    Re : [c++] lecture dans un fichier texte

    Bonjour,

    voici un bout de code qui fait ce que tu souhaites:
    Code:
    #include <fstream>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    	ifstream file( "dum.txt" ); // le fichier texte
    	vector<string> myStrings; // le vector qui va contenir toutes les chaines de carractères lues
    
        if ( file ) // on vérifie si l'ouverture du fichier a réussi
        {
            std::string line; //une string qui va contenir temporairement la ligne lue
            while ( std::getline( file, line ) ) // tant qu'on a pas tout lu, on lit la ligne suivante
            {
    		myStrings.push_back(line); // on rajoute la ligne lue dans le vector
    	}
        }
    
    	return 0;
    }
    Hope it helps.

    ps: désolé pour l'indentation, la balise [code] a tout modifié.

  8. #6
    bob la truite

    Re : [c++] lecture dans un fichier texte

    Merci de ton aide! Mais a quel moment est ce que ma variable prend la valeur de la ligne lue?Et en plus je n'arrive pas a voir comment je peux réussir a faire correspondre une variable a chaque ligne...

  9. Publicité
  10. #7
    skydancer

    Re : [c++] lecture dans un fichier texte

    Bonjour,

    Tu pourrais faire un effort , ce programme contient 6 lignes de codes, alors laquelle tu ne comprend pas ? En plus les fonctions ont des noms plutot explicite : GetLine() à ton avis que fait cette fonction ? Et le vecteur Mystrings, que contient-il ?

  11. #8
    r0d

    Re : [c++] lecture dans un fichier texte

    Citation Envoyé par bob la truite Voir le message
    Merci de ton aide! Mais a quel moment est ce que ma variable prend la valeur de la ligne lue?
    Ca se passe en 2 temps:
    1) std::getline( file, line );
    cette instruction lit une ligne du fichier (file) et rempli un objet de type string (line) avec cette ligne.
    2) myStrings.push_back(line);
    cette instruction "range" la ligne lue (line) dans le vector (un vector c'est comme un tableau C, mais en C++) myStrings.

    Citation Envoyé par bob la truite Voir le message
    Et en plus je n'arrive pas a voir comment je peux réussir a faire correspondre une variable a chaque ligne...
    Le bout de code que je t'ai fourni est une boucle, tu ne pourras donc pas utiliser des variables indépendantes. C'est la raison pour laquelle j'ai mis tout dans un vector.

    Si tu veux obtenir des variables séparées, il faudra faire quelque chose comme ça (pas testé):
    Code:
    #include <fstream>
    #include <string>
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
        ifstream file( "dum.txt" ); // le fichier texte
        
        if ( file ) // on vérifie si l'ouverture du fichier a réussi
        {
            string line1;
            getline( file, line1 );
    
            string line2;
            getline( file, line2 );
    
            string line3;
            getline( file, line3 );
    
            // etc...
        }
    
        return 0;
    }
    Remarque: ce code ne fonctionne que si le fichier ne contient que des chaines de caracère. S'il y a des nombres, un petite transformation aprés lecture sera nécessaire.

    edit: c'est vrai que tu pourrais faire un effort

  12. #9
    bob la truite

    Re : [c++] lecture dans un fichier texte

    Je fais des efforts, mais je part de très très bas...

  13. #10
    bob la truite

    Re : [c++] lecture dans un fichier texte

    Désolé pour cette dernière question,mais je peux pas faire autrement: ce que tu m as mis ala fin était exactelment ce que je cherchais a faire, mais comment je peux ensuite insérer,par exemple, le résultat de getline(file,line1) dans une variable?

  14. #11
    r0d

    Re : [c++] lecture dans un fichier texte

    Citation Envoyé par bob la truite Voir le message
    comment je peux ensuite insérer,par exemple, le résultat de getline(file,line1) dans une variable?
    dans le code getline(file, line1); , line1 EST une variable. As-tu essayé d'exécuter le code que je t'ai donné et de voir ce qu'il se passe?

    Quel compilateur/IDE utilises-tu?

  15. #12
    invite765732342432
    Invité

    Re : [c++] lecture dans un fichier texte

    Citation Envoyé par bob la truite Voir le message
    Désolé pour cette dernière question,mais je peux pas faire autrement: ce que tu m as mis ala fin était exactelment ce que je cherchais a faire, mais comment je peux ensuite insérer,par exemple, le résultat de getline(file,line1) dans une variable?
    Ouh, là là !
    line1 c'est la variable dans laquelle le résultat de la lecture va...

  16. Publicité
  17. #13
    bob la truite

    Re : [c++] lecture dans un fichier texte

    Eh bien j utilise visual c++. En fait j ai une application que je sauvegarde en enregistrant les valeurs des variables dans un fichier texte, et je veux donc récupérer l'état des variables dans ce même fichier texte lorsque l'utilisateur souhaite charger une sauvegarde.
    Et j ai fait:


    using namespace std;
    ifstream file("toto.txt");
    getline(file,nom__variable);

    où nom__variable est une variable Cstring de mon application,mais ca ne fonctionne pas...

  18. #14
    r0d

    Re : [c++] lecture dans un fichier texte

    Citation Envoyé par bob la truite Voir le message
    Eh bien j utilise visual c++. En fait j ai une application que je sauvegarde en enregistrant les valeurs des variables dans un fichier texte, et je veux donc récupérer l'état des variables dans ce même fichier texte lorsque l'utilisateur souhaite charger une sauvegarde.
    Et j ai fait:


    using namespace std;
    ifstream file("toto.txt");
    getline(file,nom__variable);

    où nom__variable est une variable Cstring de mon application,mais ca ne fonctionne pas...
    Déjà Cstring ça n'existe pas. cstring ou CString ok. Dans ton cas, je crois que c'est CString car il me semble que tu utilises la MFC.
    Dans les bouts de code que je t'ai donné, il s'agit de string (ou std::string, mais comme j'inclus l'espace de nommage std (using namespace std;), pas besoin de std::).
    std est l'espace de nommage de la bibliothèque standard c++. La MFC n'est pas compatible avec la lib standard.
    Si mon code fonctionne avec des std::string, rien ne permet de savoir s'il va fonctionner avec des CString. Ce serait une sorte de miracle, car ce n'est pas prévu.

    Ensuite, lorsque ça ne fonctionne pas, donnes-nous plus de précisions, car nous ne sommes pas devins et il nous est impossible de savoir ce qui ne fonctionne pas s'il nous n'avons pas (au moins):
    -> la ligne qui pose problème ainsi que toute la partie du code suceptible d'avoir un lien avec le problème.
    -> quel type d'erreur (erreur de compilation, pendant l'exécution, etc.)
    -> le message d'erreur du compilateur

    Enfin, moi je te propose une solution qui utilises la lib stantard. Si tu souhaites à tout prix utiliser la MFC, je me refuse à t'aider (je considère la MFC comme un véritable danger pour le C++, un truc inutile, lourd, peu fiable et une insulte faite par B.G aux concepteurs du c++), mais tu peux tout de même jeter un coup d'oeil sur la msdn, il y aura tout ce dont tu as besoin (voir classes CString et CStdioFile notemment).

  19. #15
    bob la truite

    Re : [c++] lecture dans un fichier texte

    C'st la ligne getline(file,nom__variable); qui pose problème,et apparemment c'est bien un problème du a cstring...Mais je ne cherche pas a tout prix utiliser les mfc,je cherche seulement a fairquelquechose qui marche...

  20. #16
    r0d

    Re : [c++] lecture dans un fichier texte

    Citation Envoyé par bob la truite Voir le message
    je ne cherche pas a tout prix utiliser les mfc,je cherche seulement a fairquelquechose qui marche...
    Dans ce cas:
    1) Créé un nouveau projet (on l'appellera toto) dans visual (win32, console).
    2) Tu efface tout ce qu'il y a dans toto.cpp
    3) Tu copie l'intégralité du code que je t'ai posté au 8eme message.
    4) Tu vérifie que ça compile
    5) Si ça compile, met un point d'arrêt (F9) à la première ligne du main()
    6) Exécute pas à pas et regarde ce qu'il se passe.

    C'est le meilleur moyen pour apprendre (ou avec les livres)

  21. #17
    bob la truite

    Re : [c++] lecture dans un fichier texte

    C'est bon j ai réglé mon problème. j ai fait
    Code:
    using namespace std;
    ifstream file("toto.txt");
    string line1;
    getline(file,line1);
    CString str(line1.c__str());
    nom__variable=str;
    Merci de votre aide!

  22. #18
    Tony93330

    Re : [c++] lecture dans un fichier texte

    Salut Bob,

    Si tu ne prends pas l'habitude de commenter et d'indenter ton code, tu ne vas pas t'y retrouver et tu ne comprendras rien à ce que tu as fait.

    Il faut que tu prennes l'habitude d'écrire clairement tes progs... Un simple conseil.

    @+ sur le forum.
    Occupez vous de mes amis. Pour ce qui est de mes ennemis, je m'en charge.

  23. Publicité

Discussions similaires

  1. Dans WORD, texte horizontal + texte vertical comment ?
    Par Cornemuse dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 24/01/2010, 06h28
  2. fichier texte et PIC
    Par FantomX dans le forum Électronique
    Réponses: 5
    Dernier message: 30/06/2007, 09h55
  3. Lecture dans un fichier texte en Langage C
    Par lui dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 16/04/2007, 11h04
  4. traitement fichier texte
    Par bryan dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 16/04/2006, 21h42
  5. MATLAB: lecture de float dans un fichier RTF
    Par ghislaine dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 26/07/2004, 13h03
Découvrez nos comparatifs produits sur l'informatique et les technologies.