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 de fichier et analyse des sous-chaines de chaque ligne


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Points : 37
    Points
    37
    Par défaut lecture de fichier et analyse des sous-chaines de chaque ligne
    Bonjour à tous,

    je suis sensé lire un fichier .txt ligne par ligne...
    ça réussi à la faire avec le code suivant :
    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
     
     ifstream fichier( "mon_fichier.txt" );
     
        if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
        {
    		string ligne; // variable contenant chaque ligne lue
    		string ch;
            // cette boucle s'arrête dès qu'une erreur de lecture survient
            while ( getline( fichier, ligne ) )
            {
                // afficher la ligne à l'écran
                cout << ligne <<endl;
    			       }
     
        }
    Sauf que mon problème c'est que je dois analyser chaque ligne et extraire chaque sous-chaine, sachant que les sous-chaine sont séparées par des espaces!!!

    Merci beaucoup pour toute aide
    et très bonne journée

  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
    Dans ta boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    std::istringstream iss(ligne);
    std::string chaine;
     
    while (iss >> chaine)
    {
        // faire quelque chosqe avec chaine
    }

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    la classe std::istringstream n'a pas l'air d'être reconnue!!!:-(

    sachant que j'ai incluse les headers suivants en tête de mon programme :
    #include <string>
    #include <fstream>
    #include <iostream>
    #include <windows.h>
    #include <istringstream>

    Est ce qu'il y a une bib spéciale qu'il faut ajouter!!!

    Merci bp!!!

  4. #4
    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

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    Merci beaucoup
    finalement, j'ai opté pour cette fonction qui marche à merveille et qui me permet de récupérer le contenu de mon fichier ligne par ligne
    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
     
    FILE *stream;
    	stream = fopen("mon_fichier.txt", "r");
        char line[80];
    	//char chaine[15];
     
        while ((fscanf(stream, "%[^\n]", line)) != EOF)
    	{
    		getc(stream);  
    		printf("%s \n", line);
    		Sleep(1000);
     
     
     
    }
    Sauf que mon problème reste entier
    j'arrive à récupérer une ligne mais je ne sais pas comment séparer les sous-chaine (séparées par un espace)qui la composent, sachant que je dois traiter chaque sous-chaine indépendemment(conversion, affichage...)

    Quelqu'un aurait-il une astuce ou une manière de faire...

    Merci beaucoup!!

  6. #6
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut

    Utilise le code d'avant, ça ce n'est pas du C++ mais du C, plus compliqué et sujet à plusieurs problèmes pour un débutant. D'autant que Laurent t'a donné la bonne réponse qui marche avec le code que tu avais avant.
    Fiquet
    - FAQ SDL
    - FAQ C++

  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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/03/2008, 15h36
  2. [VB] lire lignes d'un fichier et remplacer une sous chaine
    Par horzy dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 04/06/2007, 20h58
  3. Réponses: 2
    Dernier message: 02/04/2007, 11h53
  4. Partage de fichier windows avec des sous réseaux différents
    Par Annaced dans le forum Administration
    Réponses: 4
    Dernier message: 07/06/2006, 21h40
  5. Réponses: 7
    Dernier message: 27/10/2005, 19h23

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