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 :

récuperer un token récursivement dans une chaine unicode


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 349
    Par défaut récuperer un token récursivement dans une chaine unicode
    Bonjour je souhaite récupéré des tokens dans une chaine unicode mais le code ne veut pas compiler.
    Création du vecteur devant stoker les tokens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<std::wstring> 	reactions;
    Raccourci pour augmenter la lisibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef boost::tokenizer< boost::char_separator<wchar_t> > token;
    Définition du séparateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::char_separator<wchar_t> separator( L"," );
    les tokens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    token tok( line, separator );
    Et la dernière ligne qui fait planter la compilation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::copy( tok.begin(), tok.end(), std::back_inserter(reactions) );
    Citation Envoyé par g++
    no matching function for call to ‘__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::__normal_iterator(__gnu_cxx::__normal_iterator<const wchar_t*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >)’

  2. #2
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Bonjour,
    J'ai bien peur que tu sois tombé sur une belle saloper... de boost::tokenizer.
    Il faut en fait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef boost::tokenizer< boost::char_separator<wchar_t>, std::wstring::const_iterator, std::wstring > token;
    Sinon le tokenizer se cale par défaut sur des itérateurs de std::string

    Une petite remarque; si le but final est de découper une ligne de texte à chaque virgule et d'ajouter les mots obtenus à un vecteur, il y a un moyen bien plus simple que boost::tokenizer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include <boost/algorithm/string.hpp>
    std::vector<std::wstring> reactions;
    std::wstring line = L"1,2,3";
    boost::algorithm::split(reactions, line , boost::is_any_of(L","));

  3. #3
    Membre très actif

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 349
    Par défaut
    Et pour de très gros fichier quelle méthode est la plus rapide?

    En tout cas un très grand merci pour ton aide et tes conseils

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/07/2009, 09h44
  2. Récuperer des caractères Majuscules dans une chaine
    Par Loïc59 dans le forum Général VBA
    Réponses: 3
    Dernier message: 17/05/2007, 00h14
  3. récuperer un caractere dans une chaine
    Par amill dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2007, 17h16
  4. Réponses: 11
    Dernier message: 29/11/2005, 16h01
  5. Récuperer un nombre dans une chaine de caractère
    Par ColonelHati dans le forum C
    Réponses: 4
    Dernier message: 27/04/2005, 14h50

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