如何正确使用MultiByteToWideChar

时间:2014-07-29 21:26:00

标签: c++ windows msdn wstring multibyte-functions

我正在使用MultiByteToWideChar将我的字符串转换为wstring。我首先尝试获得我的wstring所需的大小。根据文档传递0作为最后一个参数应该完成这个。使用MultiByteToWideChar(CP_UTF8, MB_COMPOSITE, str.c_str(), -1, nullptr, 0);返回0作为wstring缓冲区的必需大小。我已经验证str也是非空字符串。我在这里做错了什么?

1 个答案:

答案 0 :(得分:5)

来自MSDN documentation

  

对于UTF-8或代码页54936(GB18030,从Windows Vista开始),dwFlags必须设置为0或MB_ERR_INVALID_CHARS。否则,该函数将失败并显示ERROR_INVALID_FLAGS。

您正在使用CP_UTF8,但也传递了MB_COMPOSITE标志,这就是它失败的原因。