【发布时间】:2012-09-03 14:56:04
【问题描述】:
我正在使用 Visual Studio c++ 并希望将 Cstring 转换为 Byte。我已经编写了这段代码,但它在第二行给了我“数据”未定义的错误。
CString data = _T( "OK");
LPBYTE pByte = new BYTE[data.GetLength() + 1];
memcpy(pByte, (VOID*)LPCTSTR(data), data.GetLength());
我还需要将 LPBYTE 转换为 const char 以用于 strcmp 函数。我已经编写了代码,但我找不到它的问题。
const LPBYTE lpBuffer;
LPBYTE lpData = lpBuffer;
CString rcvValue(LPCSTR(lpBuffer));
const CHAR* cstr = (LPCSTR)rcvValue;
if (strcmp (cstr,("ABC")) == 0)
{
////
}
【问题讨论】:
-
该代码是正确的(假设您后来考虑了尾随
0。请粘贴您遇到的真正错误。 -
这段代码根本不正确。如果 CString 的基本类型是 'char',它就可以工作,但是如果启用了 Unicode,并且基本类型是 wchar_t,那么它就被破坏了。 GetLength 返回字符数(即 char 或 wchar_t 的数量),而不是分配用于保存字符串的字节数。
标签: c++ visual-studio-2010 mfc