Cómo usar correctamente MultibytimeoWideTechar
-
21-12-2019 - |
Pregunta
Estoy usando MultibytimetoWideTechar para convertir mi cadena a un WSTRING.Primero estoy tratando de obtener el tamaño requerido para mi WSTRING.Según la documentación que pasa 0, ya que el último argumento debe lograr esto.El uso de MultiByteToWideChar(CP_UTF8, MB_COMPOSITE, str.c_str(), -1, nullptr, 0);
devuelve 0 como el tamaño requerido del búfer WSTRING.He verificado que STR es una cadena no vacía también.¿Qué estoy haciendo mal aquí?
Solución
de la Documentación de MSDN :
Para UTF-8 o CÓDIGO Página 54936 (GB18030, comenzando con Windows Vista), DWFLAGS debe configurarse en 0 o MB_ERR_INVALID_CHARS.De lo contrario, la función falla con ERROR_INVALID_FLAGS.
Estás usando CP_UTF8, pero también pasa la bandera MB_COMPOSETE, por eso es por eso que está fallando.