[英]How to properly use MultiByteToWideChar
我正在使用MultiByteToWideChar将我的字符串转换为wstring。 我首先尝试获得我的wstring所需的大小。 根据文档传递0作为最后一个参数应该完成这个。 使用MultiByteToWideChar(CP_UTF8, MB_COMPOSITE, str.c_str(), -1, nullptr, 0);
返回0作为wstring缓冲区的必需大小。 我已经验证str也是非空字符串。 我在这做错了什么?
从MSDN文档 :
对于UTF-8或代码页54936(GB18030,从Windows Vista开始),dwFlags必须设置为0或MB_ERR_INVALID_CHARS。 否则,该函数将失败并显示ERROR_INVALID_FLAGS。
您正在使用CP_UTF8但也传递MB_COMPOSITE标志,这就是它失败的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.