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 :

C++ lire la n-ieme ligne d'un fichier texte


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut C++ lire la n-ieme ligne d'un fichier texte
    salut,
    je veux savoir comment je peux lire la n-ieme ligne d'un fichier texte en c++
    est ce que quelqu'un serait comment faire?
    merci d'avance

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Réponse dans la FAQ.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut
    dans la FAQ ya seulement, Comment faire pour lire un fichier ligne par ligne ?
    et sais cmt le fair mais ce qu'l me faux c'est de lire une ligne que je choisi moi meme

  4. #4
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    bonjour,

    en mettant un compteur de ligne qui s incremente a chaque heu ... lecture de ligne, ca ferait pas ce que tu veux ?

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut
    voila le code que j'ai mais ça lis tous le fichier, si quelq'un peux le modifier pr que je puisse recupuré la n-iém ligne de mon fichier txt

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #include <string>
    #include <fstream>
    #include <iostream>
    #include <string.h>
    #include <fstream.h>
    #include <iostream.h>
     
     
    int main()
    {
     
     
        // le constructeur de ifstream permet d'ouvrir un fichier en lecture
        std::ifstream fichier( "strtok esséye.txt" );
     
        if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
        {
            std::string ligne; // variable contenant chaque ligne lue
     
            // cette boucle s'arrête dès qu'une erreur de lecture survient
            while ( std::getline( fichier, ligne ) )
     
     
     
     
            {
                // afficher la ligne à l'écran
                std::cout << ligne << std::endl;
            }
        }
    }

  6. #6
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    heu pas moi,
    mais t as juste a mettre un int qui s incremente chaque passage de la boucle et tu t arrete quand t as atteint l'incide de la ligne que tu recherche (qui doit lui aussi, l indice, etre de type int a priori).

  7. #7
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut
    j'ai esséyé avec ce conde mais ça fonction pas, c bizzard !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int i = 0;
    while ( std::getline( fichier, ligne ))
            {
                if(i == n )
                {
                       // afficher la ligne à l'écran
                       std::cout << ligne << std::endl;
                }
            }

  8. #8
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut
    ça yé j'ai trouvé

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    #include <string>
    #include <fstream>
    #include <iostream>
    #include <string.h>
    #include <fstream.h>
    #include <iostream.h>
     
     
    int main()
    {
        int n =  3; // si on veut recuperer la 3 eme ligne
        int i = 0;
     
        // le constructeur de ifstream permet d'ouvrir un fichier en lecture
        std::ifstream fichier("strtok esséye.txt");
     
        if( fichier )// ce test échoue si le fichier n'est pas ouvert
        {
            std::string ligne; // variable contenant chaque ligne lue
     
            // cette boucle s'arrête dès qu'une erreur de lecture survien
    while( std::getline( fichier, ligne ))
            {
                if(i == n )
                {
                       // afficher la ligne à l'écran
                       std::cout << ligne << std::endl;
                }
                i++;
            }
        }
    }

  9. #9
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Salut,

    Quelques remarques quand même:

    les fichiers <string.h>, <fstream.h> et <iostream.h> sont antérieurs à la norme et ne sont gardé que pour rétro-compatibilité...

    Ils sont d'autant plus inutiles dans ton code que tu insères les fichiers qui ont pris leur place (<string>,<fstream> et <iostram>).

    La seule différence entre les deux versions de ces fichiers vient du fait que, dans les version sans extension, les différentes classes sont déclarées dans l'espace de noms std.

    Cela implique "simplement" qu'il faut, au choix:
    1. fournir le nom avec la portée complete (std::cin, std::string, std::ifstream) ou
    2. utiliser la directive using namespace std;(mais de préférence pas dans les fichiers d'en-tête quand tu en utilise)

    Et comme, de toutes manières, tu utilise les noms en fournissant leur portée complète... c'est une raison de plus pour "virer" les inclusions des version avec l'extension .h

    D'un autre coté, tu devrais veiller à suivre une politique stricte en ce qui concerne l'indentation et la mise en forme du code, même si je te laisse totalement libre de celle que tu choisira.

    Ainsi, il serait opportun de veiller à ce que la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while( std::getline( fichier, ligne ))
    soit alignée avec la ligne
    Cela n'a pas énormément d'importance pour un code aussi court, mais tu verra que, sur des codes plus volumineux (et tu va en écrire, crois moi sur parole ), cela te facilitera énormément la vie

    En outre, la fonction main renvoie normalement un entier (valant 0 si elle s'est terminée correctement), et un compilateur bien réglé aurait du t'indiquer... qu'elle ne renvoie rien dans le code que tu présente.

    Enfin, mais cela n'est également qu'un détail, j'aurais préféré une implémentation proche de
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #include <string>
    #include <fstream>
    #include <iostream>
     
     
    int main()
    {
        /* tant qu'à faire, n peut être constant ;) */
        const int n =  3; // si on veut recuperer la 3 eme ligne
        int i = 0;
     
        // le constructeur de ifstream permet d'ouvrir un fichier en lecture
        std::ifstream fichier("strtok esséye.txt");
     
        if( fichier )// ce test échoue si le fichier n'est pas ouvert
        {
            std::string ligne; // variable contenant chaque ligne lue
     
            // bouclons tant que nous n'avons pas atteint la ligne souhaitée,
            // et pour autant que la lecture se passe correctement
            while( i<n && std::getline( fichier, ligne ))
            {
                i++;
            }
            // affichons la ligne que nous venons de trouver 
            // ou la dernière qui a été lue
            //
            // selon ton souhait, il serait possible de tester si nous avons
            // bel et bien atteint la lignes que nous voulions
            std::cout<<str<<std::endl;
        }
        // "tant qu'à faire, signalons le problème à l'utilisateur et quittons le 
        // programme sur erreur
        else
        {
            std::cout<<"je n'ai pas su ouvrir le fichier, je vais donc quitter";
            return 1;
        }
        // la fonction main renvoie d'office un entier valant 0 si
        // l'application s'est correctement déroulée
        return 0;
    }
    Pour le reste, tu vois que, quand on cherche un peu, et qu'on pense à la FAQ, les choses sont "si simples"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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

Discussions similaires

  1. Lire et modifier les lignes d'un fichier texte
    Par GCAccess dans le forum Windows Forms
    Réponses: 8
    Dernier message: 01/12/2009, 14h28
  2. Lire les 20 dernières lignes d'un fichier texte
    Par David_24 dans le forum Tcl/Tk
    Réponses: 1
    Dernier message: 25/05/2009, 17h47
  3. [batch]Lire la 2ème ligne dans un fichier texte
    Par norac dans le forum Windows
    Réponses: 2
    Dernier message: 07/07/2006, 11h27
  4. [CSV] Ne lire que la premiere ligne d'un fichier CSV
    Par passie dans le forum Langage
    Réponses: 7
    Dernier message: 05/07/2006, 12h02
  5. [BATCH] lire chaque ligne d'un fichier texte
    Par bartmarley dans le forum Windows
    Réponses: 13
    Dernier message: 22/04/2005, 21h01

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