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 :

Comment récupérer les données dans un fichier sans les séparateurs


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut Comment récupérer les données dans un fichier sans les séparateurs
    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
     
    CStdioFile f2 ("C://mesures//mesures_temp.txt", CFile::modeRead | CFile::typeText );
     
     
     
    	fichier.close();
    	CString s1, s2
    	f2.ReadString(s1); // s1 contient "premiere ligne"
    	f2.ReadString(s2); // s2 contient "deuxieme ligne"
     
     
       CString strTemp=s1;
       char *pWord = strtok(strTemp.GetBuffer(0), ";");
       while( pWord != NULL )
       {
            pWord = strtok( NULL, ";" );
       }
    Je récupére les données sans séparateurs (je spécifie le séparateur),
    mais je dois savoir combien il y a de lignes dans le fichier.
    Comment faire?

  2. #2
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    est tu obligé d'utiliser les CString ??
    Attention strtok
    char *pWord = strtok(strTemp.GetBuffer(0), ";");
    strok va modifier la mémoire de strTemp. ce qui n'est pas propre, et certainement créer des problème de memoire plustard

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    non mais je pourrais utiliser quoi d'autres?

    Pour l'insant j'ai que des mesures mais après j'aurais des chaînes de caractères aussi

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pour savoir ou non s'il y a un inconvénient à employer strtok() ici, il faudrait savoir ce que tu vais de strTemp par la suite.

    Quant au comptage de ligne, ben... Une boucle de ReadString() devrait faire l'affaire, non ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Pour savoir ou non s'il y a un inconvénient à employer strtok() ici, il faudrait savoir ce que tu vais de strTemp par la suite.

    Quant au comptage de ligne, ben... Une boucle de ReadString() devrait faire l'affaire, non ?
    Vue que strtok modifie la mémoire du tableau de char* passé en paramètre. Il y as un gros inconvénient !! Même si cela plantera peut être pas, utilisé comme cela, on va modifier la mémoire d'un objet, sans qu'il en soit conscient. Ce qui n'est pas du tout propre et une grosse source de bug futur

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    EN faite y as une FAQ pour le MFC
    http://cpp.developpez.com/faq/vc/?page=sommaire
    dont cette partie :
    http://cpp.developpez.com/faq/vc/?page=Fichiers
    qui ressemble à ce que tu cherche

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    Vue que strtok modifie la mémoire du tableau de char* passé en paramètre. Il y as un gros incontinent !! Même si cela plantera peut être pas, utilisé comme cela, on va modifier la mémoire d'un objet, sans qu'il en soit conscient. Ce qui n'est pas du tout propre et une grosse source de bug futur
    Avec CString::GetBuffer(), l'objet est conscient qu'on modifie ses données.
    Mais il faut faire un ReleaseBuffer() quand on a fini...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 264
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    Vue que strtok modifie la mémoire du tableau de char* passé en paramètre. Il y as un gros incontinent !! Même si cela plantera peut être pas, utilisé comme cela, on va modifier la mémoire d'un objet, sans qu'il en soit conscient. Ce qui n'est pas du tout propre et une grosse source de bug futur
    Celle-là est est énorme !

  10. #10
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par toutounesan Voir le message
    non mais je pourrais utiliser quoi d'autres?

    Pour l'insant j'ai que des mesures mais après j'aurais des chaînes de caractères aussi
    Ben les std::string justement. La faq est basé sur La SL (donc plustôt portable) et non les MFC (beurk pas beau) .
    Je comprend ton problème avec la FAQ, vue que tu utilise des class windows... Si tu as le choix, utilise les string, ifstream, ofstream de la std. Qui sont bien expliqué dans la FAQ et je pense de meilleur qualité que ces les MFC

  11. #11
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par toutounesan Voir le message
    je dois savoir combien il y a de lignes dans le fichier.
    Comment faire?
    J'ai déjà dit :
    Dans la FAQ : il y a deux méthodes. Tu vas dans la FAQ de temps en temps?
    http://cpp.developpez.com/faq/cpp/?p..._compte_lignes

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/12/2010, 22h04
  2. Réponses: 1
    Dernier message: 30/11/2009, 22h50
  3. Réponses: 0
    Dernier message: 10/08/2008, 19h05
  4. Réponses: 8
    Dernier message: 23/06/2006, 13h51
  5. [](VB) Récupérer les données dans un fichier .xml
    Par Furius dans le forum VBScript
    Réponses: 4
    Dernier message: 02/10/2005, 20h39

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