c++将unicode CString或wchar_t转换为LPBYTE

C++ convert unicode CString or wchar_t to LPBYTE

本文关键字:转换 LPBYTE wchar unicode CString c++      更新时间:2023-10-16

我知道这是一个简单的问题,但我已经尝试了很多方法,在所有这些方法中,我丢失了数据,文本数据,而不是那些在每个字节之后尾随0的数据。

我使用GetBuffer(0)CString转换为wchar_t,仍然没有运气。我找不到合适的LPBYTE

最后我需要它是const LPBYTE,但我认为与LPBYTE的简单铸造我可以得到const LPBYTE

所以你能帮我转换CStringwchar_tLPBYTE数组吗?

谢谢

如果您想"看到"CString的内容作为BYTE的简单"原始"序列(数组),您可以使用CString::GetString()方法获得指向第一个CString字符的指针,然后强制转换为const BYTE*:

CString str;
....
const BYTE* pb = reinterpret_cast<const BYTE*>(str.GetString());

如果你想"看到"单个wchar_t作为BYTE的序列,你可以获取它的地址并再次强制转换为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) );