IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Lecture d'un fichier mot par mot


Sujet :

C++

  1. #1
    Membre régulier Avatar de hamster
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 137
    Points : 123
    Points
    123
    Par défaut Lecture d'un fichier mot par mot
    Bonjour


    J'ai récupéré le code de la FAQ permettant de lire un fichier ligne par ligne.
    Je l'ai modifié pour lire un fichier mot par mot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <string>
    #include <fstream>
    #include <iostream>
     
    int main()
    {
    	short i = 1;
     
    	std::ifstream fichier( "Z:\\Mes Documents\\fichier.txt" );
     
        if ( fichier ) 
        {
            std::string ligne; 
     
            while ( std::getline( fichier, ligne, ' ') )
            {
    			std::cout << i << " :: " << ligne << std::endl;
    			i++;
            }
        }
    }
    Mon problème est que la fonction getline ne détecte plus les sauts de ligne.

    Par exemple voici un fichier texte :
    Premiere ligne
    ligne numero deux
    ligne 3
    et voici le résultat fourni par le code :
    1 :: Premiere
    2 :: ligne
    ligne
    3 :: numero
    4 :: deux
    ligne
    5 :: 3
    Est-il possible de lire le fichier ligne par ligne, et pour chaque ligne de la lire mot par mot ? (en utilisant deux std::getline imbriqués par exemple)

    j'y retourne, j'attends vos suggestions avec impatience !!

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Est-il possible de lire le fichier ligne par ligne, et pour chaque ligne de la lire mot par mot ? (en utilisant deux std::getline imbriqués par exemple)
    Bien sûr.

    Mais tu peux utiliser l'opérateur >> plutôt que getline, lui prendra comme délimiteurs les caractères habituels (espace, tabulation, saut de ligne, ...).

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 180
    Points
    180
    Par défaut
    et utiliser get_line pour recuperer une ligne, puis en extraire ce que tu veux...

  4. #4
    Membre régulier Avatar de hamster
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 137
    Points : 123
    Points
    123
    Par défaut
    Bingo !

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <string>
    #include <fstream>
    #include <iostream>
     
    int main()
    {
    	short i = 1;
     
    	std::ifstream fichier( "Z:\\Mes Documents\\fichier.txt" );
     
        if ( fichier ) 
        {
            std::string ligne; 
     
            while ( fichier >> ligne )
            {
    			std::cout << i << " :: " << ligne << std::endl;
    			i++;
            }
        }
    }
    merci à tous !

    je travaill en fait sur un petit programme qui permet de calculer le nombre d'occurence de chaque mot dans un fichier texte...

    j'ai codé ça ce week end et il ne me manquait plus que la fonction de lecture...

    c'est fait

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu peux adapter le code de la FAQ

    http://c.developpez.com/faq/cpp/?pag..._compte_lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <fstream>
    #include <string>
     
    int main()
    {
        std::ifstream file( "fichier.txt" ); 
     
        if ( file )
        {
            int words = std::distance(std::istream_iterator<string>(file), std::istream_iterator<string>());
        }
    }
    std::distance pour compter le nombre de mots, std::count pour compter le nombre d'occurences d'un mot précis.

  6. #6
    Membre régulier Avatar de hamster
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 137
    Points : 123
    Points
    123
    Par défaut
    oui...

    en même temps je me suis amusé à sortir un super code avec liste doublement chainée pour mémoriser les mots, tri alphabétique et tout et tout...

    alors je vais conserver mon code, par fierté personnelle

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Yaisse

    Mais la prochaine fois n'oublie pas qu'on peut tout faire avec la STL (la liste doublement chaînée, le tri alphabétique, ... et en 3 lignes de code) 8)

  8. #8
    Membre régulier Avatar de hamster
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 137
    Points : 123
    Points
    123
    Par défaut
    peut être que je posterai mon code d'ailleurs, histoire de voir si j'ai pondu quelque chose d'à peu près propre...
    je posterai ça demain matin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fichier txt : lire mot par mot
    Par Skice dans le forum VB.NET
    Réponses: 6
    Dernier message: 23/05/2011, 12h30
  2. Réponses: 2
    Dernier message: 26/04/2011, 19h23
  3. Créer un fichier protégé par mot de passe
    Par Damiendupont dans le forum Général Python
    Réponses: 2
    Dernier message: 29/03/2008, 19h27
  4. Lire le contenu d'un fichier mot par mot
    Par mlaiti dans le forum Débuter
    Réponses: 6
    Dernier message: 19/03/2008, 11h15
  5. [VB6]ouverture d'un fichier bloqué par mot de passe
    Par toytoy18 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/06/2006, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo