3

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

4

1 回答 1

6

MSDN 文档

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

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

于 2014-07-29T22:30:13.023 回答