Bonjour,
Je voudrais convertir
en std::string ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part WCHAR name[25] = {0}; // +1 for null
Merci
Bonjour,
Je voudrais convertir
en std::string ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part WCHAR name[25] = {0}; // +1 for null
Merci
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 ?
J'ai obtenu la réponse sur un autre forum, il faut utiliser WideCharToMultiByte()
merci
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 ?
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.
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.
Partager