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++/CLI Discussion :

Convertir WCHAR en std::string


Sujet :

C++/CLI

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut Convertir WCHAR en std::string
    Bonjour,

    Je voudrais convertir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WCHAR name[25] = {0}; // +1 for null
    en std::string ?

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 470
    Par défaut
    Qu'entendez-vous par "convertir" ?
    Un tableau "C" de WCHAR (lui aussi "C" et pas "C++") n'est pas compatible avec un std::string (type "C++"), aussi bien au niveau des "valeurs" possibles qu'au niveau mémoire (et la représentation mémoire d'une std::string n'est même pas standardisée).

    C'est quoi le "vrai" problème initial, SVP ?

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut
    J'ai obtenu la réponse sur un autre forum, il faut utiliser WideCharToMultiByte()
    merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 470
    Par défaut
    Attention, c'est une boite à emmerdes :
    https://learn.microsoft.com/fr-fr/wi...hartomultibyte
    Le format MBCS n'est pas plus compatible qu'UTF-16 avec std::string.
    Une std::wstring, c'est bien plus raisonnable.

    En espérant que ceux qui vous ont préconisé "WideCharToMultiByte" avait le :

    C'est quoi le "vrai" problème initial, SVP ?

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut
    en fait je transforme le WCHAR en std::wstring sur lequel j'utilise WideCharToMultiByte (utf-8) pour obtenir un std::string que je compare à un autre std::string (utf-8), sous Windows j'ai testé "é, à" ça n'a pas l'air de poser de problème.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 470
    Par défaut
    Il y a des centaines de code-page/"locale" possibles sous Windows qui chacune ne dispose pas de tous les caractères UTF-16, et encore moins UTF-32.
    Chaque exécutable peut changer ces réglages qui seront hérités par ses processus enfants, et c'est sans compter les configurations de consoles, les choix de police/font, etc...
    Ce n'est pas en vérifiant avec 2-3 tests que vous pouvez vérifier qu'il n'y pas de trous dans la raquette.

    Franchement, encore coder en ASCII et pas en UNICODE en 2024, c'est un non-sens.

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

Discussions similaires

  1. Convertir QString en std::string
    Par SOU HAIL dans le forum Qt
    Réponses: 2
    Dernier message: 24/11/2018, 19h29
  2. [FAQ]Comment convertir une std::string en AnsiString ?
    Par Invité dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/11/2006, 18h08
  3. convertir std::string en float
    Par radicalrider dans le forum SL & STL
    Réponses: 20
    Dernier message: 03/07/2006, 18h50
  4. Convertir un std::string en double.
    Par vdumont dans le forum SL & STL
    Réponses: 16
    Dernier message: 10/05/2006, 16h46
  5. convertir un char * en std::string
    Par benahpets dans le forum SL & STL
    Réponses: 12
    Dernier message: 01/05/2006, 17h15

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