0

我知道转换CByteArrayCString非常简单。但是我该如何反其道而行之 - from CStringto CByteArray

4

2 回答 2

4

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());
于 2013-03-18T11:36:02.870 回答
3

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

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

因此,您需要考虑这是否真的是预期的行为。

于 2013-03-18T12:10:12.903 回答