我知道这是一个简单的问题,但我尝试了很多方法,在所有这些方法中,我都会丢失数据、文本数据,而不是每个字节后的尾随 0。
我转换CString
为wchar_t
using GetBuffer(0)
,仍然没有运气。我无法获得适当的LPBYTE
.
最后我需要它const LPBYTE
,但我认为通过简单的铸造LPBYTE
我可以得到const LPBYTE
。
那么你能帮我转换或CString
数组吗?wchar_t
LPBYTE
谢谢
如果您想将 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) );