我有一个没有MFC支持的MS VC++程序。 (这就是为什么的std :: wstring的,而不是CString的使用。)
我用这个方法流数据成的richedit:从std :: wstring到LPBYTE的转换
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;
}
这多少作品,但我不喜欢将字符转换的手工方式使用作为循环。
是否有任何功能可以以更有效的方式执行此转换?
你的循环看起来不错。只要确保明白你不改变编码 - 你只需将字符串作为字节数组复制即可。你也可以写''LPBYTE pbBuff =(LPBYTE)&wsBuffer [0];' – Henno
我将宽字符串复制到一个字节数组,所以上面的类型转换将不起作用) - : – user681768917
你可以使用WideCharToMultiByte '实际上正确地将宽字符串转换为适当的编码。 – dreamlax