我知道这是一个简单的问题,但我尝试了很多方法,在所有这些方法中,我都会丢失数据、文本数据,而不是每个字节后的尾随 0。
我转换CString为wchar_tusing GetBuffer(0),仍然没有运气。我无法获得适当的LPBYTE.
最后我需要它const LPBYTE,但我认为通过简单的铸造LPBYTE我可以得到const LPBYTE。
那么你能帮我转换或CString数组吗?wchar_tLPBYTE
谢谢
如果您想将 a 的内容“CString视为”一个简单的“原始”序列(数组)BYTE,您可以使用CString::GetString()方法获取指向第一个CString字符的指针,然后转换为const BYTE*:
CString str;
....
const BYTE* pb = reinterpret_cast<const BYTE*>(str.GetString());
如果您想“看到”单个wchar_t作为BYTE's 的序列,您可以获取其地址并再次转换为const BYTE*:
wchar_t wch;
....
const BYTE* pb = reinterpret_cast<const BYTE*>(&wch);
但是,如果您想从 Unicode UTF-16 转换为另一种编码,例如 UTF-8,您可能需要使用一些转换助手,例如CW2A:
CString strUtf16; // Assume UNICODE builds (the default since VS2005)
....
// Convert from UTF-16 to UTF-8
CW2A strUtf8( strUtf16, CP_UTF8 );
// Convert (cast) to const BYTE*
const BYTE* pb = reinterpret_cast<const BYTE*>( static_cast<const char*>(strUtf8) );