c++ - 无法将 CString 转换为 BYTE 数组

标签 c++ arrays cstring

我需要将 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/

相关文章:

c++ - 数组中字符的排列

javascript - 减去后自动填充输入

c - 末尾带有垃圾字符的字符串数组

c++ - 在 MFC 中编辑控件的 CString

c++ - 在模型动态插入和删除QTableView中的行时发出信号/槽

c++ - 如何删除指针数组

php - MySQL循环搜索多个单词

python - 如何为numpy数组创建圆形蒙版?

c++ - 如何安排循环来检查数字

c++ - 将二维数组传递给 C++ 中的函数