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

Boost C++ Discussion :

Comment 'split' un string avec 2 espaces comme delimiteur?


Sujet :

Boost C++

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Par défaut Comment 'split' un string avec 2 espaces comme delimiteur?
    Bonjour,

    Je cherche a extraire les morceaux d'un string en utilisant boost script de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::split( morceaux, m_string, boost::is_any_of("  ") );
    mais je souhaite que le délimiteur soit exactement 2 espaces. Si j'en spécifie deux (" ") il considère toujours un espace comme étant un délimiteur.

    Pouvez vous m'indiquer comment faire?

    Merci

  2. #2
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Comment traduirais-tu is any of ?
    Ceci devrait t'aider à trouver la réponse

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Par défaut
    Je te remercie pour le cours d'anglais.

    Ceci dit j'aurai surement plus apprécié une indication quand à la façon d'expliciter ou de spécifier un élément de la liste de manière plus formelle que par le simple ajout d'un caractère dans le string.
    Tout comme j'aurai plus apprécié une indication sur la façon de d'expliciter le séparateur des éléments de la liste afin de pouvoir utiliser des substrings comme délimiteur.

    En effet, le any_of que tu sites, s'applique à chaque caractère quand moi, je veux en compter deux comme un unique délimiteur.

    Mais merci encore.

    p.s. désolé si ma réponse a paru rude, mais j'avais trouvé que l'autre n'était pas vraiment utile. peut être me suis je trompé sur le ton qui avait été employé.

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Le split de string algo utilise un prédicat sur les caractères. Il n'est donc pas évident de faire ce que tu souhaites avec.

    Je te conseilles de te tourner vers boost::regex (ou std::tr1::regex, si ton compilateur implémente TR1), afin d'avoir plus de puissance de calcul à ta portée.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Le split de string algo utilise un prédicat sur les caractères. Il n'est donc pas évident de faire ce que tu souhaites avec.

    Je te conseilles de te tourner vers boost::regex (ou std::tr1::regex, si ton compilateur implémente TR1), afin d'avoir plus de puissance de calcul à ta portée.
    Avant de sortir les expressions régulières, j'envisagerais quand même d'utiliser std::string::find.

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Par défaut
    Bonjour,
    Merci pour vos réponses. En effet, le std::string::find est une solution et à coup de find, on peut "tokenizer" pratiquement comme on veut.

    Mais en je cherchais une méthode un peu moins bourrine, même si celà implique qu'elle soit plus sophistiquée.

    @JolyLoic: Je vais jeter un oeil à boost::regex mais si tu peux me donner quelques idées d'avances, ça ne sera pas de refus.

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Regarde plutôt du côté de boost.tokenizer

  8. #8
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Par défaut
    j'ai déjà regardé du coté du tokenizer et le problème est le même.
    il fonctionne à base de caractère.

    A moins que tu n'ais un exemple que tu aurais testé? peut être n'ai je pas tout compris.

  9. #9
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    J'avais pas compris que tu voulais splitter sur " "... Du coup le any_of c'était n'importe quoi oui effectivement.

  10. #10
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Par défaut
    Et bien voilà, j'utilise les regex pour obtenir ce que je veux.
    Peut être pas aussi simple qu'on aurait pu le souhaiter, mais c'est efficace.

    Merci à tous

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

Discussions similaires

  1. Utiliser une string avec tag XML comme fichier XML
    Par kaygee dans le forum ASP.NET
    Réponses: 1
    Dernier message: 20/03/2009, 15h52
  2. Réponses: 2
    Dernier message: 07/05/2008, 11h34
  3. comment concatiner des strings avec des nombre
    Par Sara83 dans le forum MATLAB
    Réponses: 3
    Dernier message: 18/10/2006, 13h06
  4. [C#] Comment Splitter une string avec une string ?
    Par ADJ Design dans le forum C#
    Réponses: 12
    Dernier message: 27/07/2006, 12h10
  5. Réponses: 3
    Dernier message: 19/04/2006, 13h28

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