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