我需要将 CString 转换为 BYTE 数组。我不知道为什么,但我在互联网上找到的所有内容都不起作用:( 例如我有
CString str = _T("string");
我一直在努力 1)
BYTE *pbBuffer = (BYTE*)(LPCTSTR)str;
2)
BYTE *pbBuffer = new BYTE[str.GetLength()+1];
memcpy(pbBuffer, (VOID*)(LPCTSTR)StrRegID, str.GetLength());
3)
BYTE *pbBuffer = (BYTE*)str.GetString();
并且始终pbBuffer仅包含str的第一个字母
DWORD dwBufferLen = strlen((char *)pbBuffer)+1;
是2
但是如果我使用 const 字符串:
BYTE *pbBuffer = (BYTE*)"string";
pbBuffer包含整个字符串
我的错误在哪里?
最佳答案
您的 CString 是 Unicode(每个字符两个字节),并且您尝试将其解释为 ANSI(每个字符一个字节)。这会导致您意想不到的结果。
您需要转换数据,而不是将底层缓冲区转换为 char*
。使用WideCharToMultiByte()为此。
关于c++ - 无法将 CString 转换为 BYTE 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2460571/