如何将CString转换为CByteArray?

时间:2013-03-18 11:09:53

标签: c++ mfc cstring

我知道将CByteArray转换为CString非常简单。但是我如何反过来做 - 从CStringCByteArray

2 个答案:

答案 0 :(得分:3)

CString类的GetBuffer()方法返回您需要的数组。之后,您可以使用memcpy或其他类似函数将其复制到CByteArray对象。

CString csData = L"someData";
CByteArray byteArr;

BYTE *pByteArray = (PBYTE)(LPCTSTR)csData.GetBuffer();
byteArr.SetSize(csData.GetLength());

memcpy(byteArr.GetData(), pByteArray, csData.GetLength());

答案 1 :(得分:2)

您需要考虑到CString中的1个字符通常不是1个字节。

const size_t noBytes = sizeof(CString::XCHAR) * myString.GetLength();
byteArray.SetSize( noBytes );
std::memcpy( 
    byteArray.GetData(),
    reinterpret_cast<BYTE*>(myString.GetBuffer()), 
    noBytes );

所以你需要考虑这是否真的是预期的行为。