gpt4 book ai didi

c++ - 从 std::wstring 到 LPBYTE 的转换

转载 作者:行者123 更新时间:2023-11-28 07:10:19 27 4
gpt4 key购买 nike

我有一个没有 MFC 支持的 MS VC++ 程序。 (这就是为什么使用 std::wstring 而不是 CString 的原因。)
我正在使用这种方法将数据流式传输到 richedit:

DWORD __stdcall MEditStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
std::wstring *wsBuffer = (std::wstring *)dwCookie;
cb = wsBuffer->length();

for (int i = 0; i < cb; i++)
*(pbBuff+i) = wsBuffer->c_str()[i];

*pcb = cb;
return 0;
}

它以某种方式工作,但我不喜欢使用 for 循环手动转换字符的方式。
是否有任何功能可以更有效地执行此转换?

最佳答案

您可以使用类似WideCharToMultiByte 的东西。

DWORD __stdcall MEditStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
std::wstring *wsBuffer = (std::wstring *) dwCookie;
*pcb = WideCharToMultiByte(CP_ACP, 0, wsBuffer->c_str(), wsBuffer->length(), pbBuff, cb, "?", NULL);
return 0;
}

您可以根据需要微调转换参数。

关于c++ - 从 std::wstring 到 LPBYTE 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21087125/

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