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

有帮助吗?

解决方案

MSDN文档

对于UTF-8或代码Page 54936(GB18030以Windows Vista开头),必须将DWFLAG设置为0或MB_ERR_INVALID_CHARS。否则,该函数因ERROR_INVALID_FLAGS而失败。

你正在使用cp_utf8,但也传递mb_composite标志,所以这就是为什么它失败了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top