Question

J'utilise MultiByteToWideChar pour convertir ma chaîne en wstring.J'essaie d'abord d'obtenir la taille requise pour ma chaîne.Selon la documentation, passer 0 comme dernier argument devrait accomplir cela.En utilisant MultiByteToWideChar(CP_UTF8, MB_COMPOSITE, str.c_str(), -1, nullptr, 0); renvoie 0 comme taille requise du tampon wstring.J'ai vérifié que str est également une chaîne non vide.Qu'est-ce que je fais de mal ici ?

Était-ce utile?

La solution

Du Documentation MSDN:

Pour UTF-8 ou la page de codes 54936 (GB18030, à partir de Windows Vista), dwFlags doit être défini sur 0 ou MB_ERR_INVALID_CHARS.Sinon, la fonction échoue avec ERROR_INVALID_FLAGS.

Vous utilisez CP_UTF8 mais vous transmettez également l'indicateur MB_COMPOSITE, c'est pourquoi cela échoue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top