gpt4 book ai didi

c++ - string 到 wstring - 防止转换在\0 上停止

转载 作者:行者123 更新时间:2023-11-28 06:37:24 25 4
gpt4 key购买 nike

所以我有 string 变量,我想将其转换为 wstring

我正在使用 mbstowcs_s .

不幸的是,我的 string 变量包含 \0 作为字符(不标记字符串的结尾)并且记录了:

mbstowcs_s 函数将指向的多字节字符串转换为通过 mbstr 转换为存储在 wcstr 指向的缓冲区中的宽字符。转换将针对每个字符继续进行,直到满足以下条件之一:遇到多字节空字符

我的临时解决方案是逐字符转换。这解决了问题,但不幸的是性能急剧下降。

知道如何克服它吗?我必须使用不同的函数进行转换吗?

最佳答案

您可以使用 MultiByteToWideChar 来指定要转换的字符数。

int MultiByteToWideChar(
_In_ UINT CodePage,
_In_ DWORD dwFlags,
_In_ LPCSTR lpMultiByteStr,
_In_ int cbMultiByte,
_Out_opt_ LPWSTR lpWideCharStr,
_In_ int cchWideChar
);

参见 MultiByteToWideChar功能。

但是,MultiByteToWideChar 是 Win32 API,但在您的情况下应该没有问题。

IIRC mbstowcs 还调用了 MultiByteToWideChar

关于c++ - string 到 wstring - 防止转换在\0 上停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26572551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com