如何正确使用MultiByteToWideChar

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

    从MSDN文档 :

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

    您正在使用CP_UTF8,但也传递MB_COMPOSITE标志,所以这就是为什么它失败。