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 :

Découpage de chaine de caractère


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 60
    Points : 40
    Points
    40
    Par défaut Découpage de chaine de caractère
    Bonjour à tous
    Mon problème est le suivant: j'aimerais savoir s'il existe une fonction qui permet d'extraire dans une longue chaine de caractères des chaines séparé par un caractère quelconque par exemple un point (.), ou l'espace.
    En effet dans mon exercice il est question de lire les lignes d'un fichier texte du genre:

    hades.models.io.Ipin i10 5700 12300 @N 1001 U
    hades.models.gates.And3 AND-Gatter 13200 4200 @N 1001 1.0E-8

    et de recupérer dans chaque ligne les chaines séparées par des points comme hades, models, ... pour la première ligne et hades, models, gates, And3 pour la deuxième ligne; et aussi celles séparées par l'espace comme i10, 5700, ... pour la première ligne et AND-Gatter, 13200, 4200, ... pour la seconde ligne.
    Merci de me répondre

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Points : 88
    Points
    88
    Par défaut
    c'est très facile, il suffit d'utiliser :

    std::string::find_first_of(),
    std::string::find_first_not_of(),
    std::string::assign(),

    et l'aide en ligne pour savoir comment ces méthodes fonctionnent.

  3. #3
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    Salut,
    tu peux utiliser getline sur un istringstream en précisant le séparateur.

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Sinon, en portable et non standard, il y a boost::tokenizer et boost::regex qui fournissent des moyens simples (pour un tant soit peu que l'on soit habitué aux itérateurs) pour réaliser ce genre de choses.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Regarde dans la librairie string.h, il y a des fonctions qui pourrait t'interresser, notemment strtok(...), strstr(...), ....

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 24
    Points : 29
    Points
    29
    Par défaut
    cstring en C++
    discutez de programmation en direct sur irc : irc.zefunchat.net canal #programmation

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Citation Envoyé par quaeser
    Regarde dans la librairie string.h, il y a des fonctions qui pourrait t'interresser, notemment strtok(...), strstr(...), ....
    On est en C++.

  8. #8
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    Merci pour toutes vos réponses, je vais essayer de les appliquer.

  9. #9
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    Salut a tous et merci encor pour vos reponses qui m'ont bien aidées à comprendre le découpage de chaine de caractere. Mais j'éprouve encore des difficutés a m'ensortir avec les methodes de Luc Hermitte que je trouve pourtant très interessantes. j'ai essayé par exemple boost::tokenizer 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
     
    #include<iostream>
    #include<boost/tokenizer.hpp>
    #include<string>
     
    int main(){
       using namespace std;
       using namespace boost;
       string s = "This is,  a test";
       tokenizer<> tok(s);
       for(tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){
           cout << *beg << "\n";
       }
    }
    qui me génere plein d'erreurs du genre:
    testboost.cpp:2:30: boost/tokenizer.hpp: No such file or directory
    testboost.cpp: In function `int main()':
    testboost.cpp:7: error: namespace `boost' undeclared
    testboost.cpp:9: error: `tokenizer' undeclared (first use this function)
    testboost.cpp:9: error: (Each undeclared identifier is reported only once for
    each function it appears in.)
    testboost.cpp:9: error: parse error before `>' token
    testboost.cpp:10: error: parse error before `>' token
    testboost.cpp:10: error: `beg' undeclared (first use this function)
    testboost.cpp:10: error: `tok' undeclared (first use this function)

    que je ne reussis pas resoudre, alors j'aimerais bien avoir des indications sur le fonctionnement de Boost::tokenizer et l'origine des erreurs.
    Merci.

  10. #10
    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
    boost est une bibliothèque qui ne fait pas partie du standard. Si tu ne l'as pas installée ça ne marchera pas .

  11. #11
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    Ha! bon merci pour l'indication , et ou est ce qu'il serait possible de se le procurer sur le net?

  12. #12
    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
    Je t'avais mis le lien dans mon post précédent, sur le mot "boost".

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

Discussions similaires

  1. Découpage de chaine de caractère en mots
    Par arrakis42 dans le forum C
    Réponses: 3
    Dernier message: 27/12/2011, 01h09
  2. Découpage de chaine de caractère
    Par legentil dans le forum Langage
    Réponses: 7
    Dernier message: 27/02/2009, 10h21
  3. [RegEx] découpage de chaine de caractère
    Par antrax2013 dans le forum Langage
    Réponses: 2
    Dernier message: 08/07/2008, 10h26
  4. Découpage de chaine de caractères
    Par fabpeden dans le forum C
    Réponses: 3
    Dernier message: 07/05/2007, 11h50
  5. Pl/Sql , 8i , découpage de chaine de caractères
    Par Youby dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/05/2006, 00h54

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