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 :

string et wstring


Sujet :

C++

  1. #1
    Membre habitué
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Points : 186
    Points
    186
    Par défaut string et wstring
    Bonjour à tous :o

    Une petite question :

    Existe t-il une fonction chez boost ou dans la stl qui permet de convertir un wstring en string ? et l'inverse ?
    Plus y'a d'Gruyère, plus y'a d'trous !
    Plus y'a d'trous, moins y'a d'Gruyère...
    Donc, Plus y'a d'Gruyère, moins y'a d'Gruyère !!!

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    bonjour, dans la STL il y a
    ::mbstowcs qui fait de string (en fait const char*) en wstring et
    ::wcstombs qui fait de wcha_t* en string
    "vaste programme"

  3. #3
    Membre habitué
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Points : 186
    Points
    186
    Par défaut
    Cool ça marche nikel...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    wstring wtest = L"blablabla";
    string test; test.resize(wtest.size());
    wcstombs(&test[0], &wtest[0], wtest.size());
    cout << test << endl;
    si vous connaissez une solution encore + simple, je suis preneur

    Merci bcp BainE
    Plus y'a d'Gruyère, plus y'a d'trous !
    Plus y'a d'trous, moins y'a d'Gruyère...
    Donc, Plus y'a d'Gruyère, moins y'a d'Gruyère !!!

  4. #4
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    nan, j'ai pas mal cherché j'ai rien trouvé d'autre mais si quelqu'un en sait plus long ca m'interesse
    "vaste programme"

  5. #5
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut Re: string et wstring
    Citation Envoyé par superspag
    Existe t-il une fonction chez boost ou dans la stl qui permet de convertir un wstring en string ? et l'inverse ?
    Il n'y a rien sur les string directement. Il faut utiliser le facet ctype de ton locale et utiliser les membres narrow et widen. J'ai pas le temps de donner un exemple. Peut-etre ce soir. Sinon, et si personne ne le fait, envoie moi un email pour me le rappeler au cas ou j'oublie.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  6. #6
    Membre habitué
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Points : 186
    Points
    186
    Par défaut
    Oui, je viens de tomber dessus avec la MSDN...
    la fonction ctype::do_narrow m'a tout l'air d'etre ce qu'il me faut mais je n'ai pas encore reussi à l'utiliser
    Bah... je doit etre fatigué, je verai ça demain

    Merci à tous, je vous tiens au courant...
    Plus y'a d'Gruyère, plus y'a d'trous !
    Plus y'a d'trous, moins y'a d'Gruyère...
    Donc, Plus y'a d'Gruyère, moins y'a d'Gruyère !!!

  7. #7
    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
    Citation Envoyé par superspag
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    wstring wtest = L"blablabla";
    string test; test.resize(wtest.size());
    wcstombs(&test[0], &wtest[0], wtest.size());
    cout << test << endl;
    Il y a un problème ici.
    Officiellement, il n'y a pas de garantie de contiguité dans les caractères qui constituent une chaine -- contrairement aux vecteurs.
    Soit, tu ne peux pas modifier la chaine via un char* extrait depuis &s[0]. Dans les faits, je ne crois pas avoir croisé d'implémentation de std::string dont les éléments ne soient pas contigus.

    Et j'imagine que la std::string est censée être encodée dans la locale globale et que la std::wtring en unicode UCS-2 (ou DBCS ? je nesais jamais)

    Bref, normalement, il faut effectivement voir du côté des code convertion facets pour pouvoir être plus souple sur l'utilisation des locales. Quant à Boost, il y a planqué, dans boost.serialize je crois, un code cvt facet pour gérer l'UTF-8. Il y en a un autre dans Adam ou Eve de chez adobe (opensource).
    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...

  8. #8
    Membre habitué
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Points : 186
    Points
    186
    Par défaut
    Merci pour toutes ces aides, je pense que je vais m'en sortir maintenant :o
    Plus y'a d'Gruyère, plus y'a d'trous !
    Plus y'a d'trous, moins y'a d'Gruyère...
    Donc, Plus y'a d'Gruyère, moins y'a d'Gruyère !!!

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

Discussions similaires

  1. char, string, wchar_t, wstring ?
    Par Glân von Brylân dans le forum SL & STL
    Réponses: 8
    Dernier message: 22/10/2014, 22h32
  2. string, wstring et dstring sont immuables ?
    Par amehat dans le forum D
    Réponses: 2
    Dernier message: 03/03/2014, 14h19
  3. Conversion string <-> wstring problème d'accent.
    Par Neckara dans le forum Débuter
    Réponses: 1
    Dernier message: 12/12/2012, 17h42
  4. char*, string et wstring
    Par esteban dans le forum C++
    Réponses: 14
    Dernier message: 18/02/2011, 15h52
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

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