【发布时间】:2013-03-18 11:09:53
【问题描述】:
我知道将CByteArray 转换为CString 非常简单。但是我该如何反其道而行之——从CString 到CByteArray?
【问题讨论】:
我知道将CByteArray 转换为CString 非常简单。但是我该如何反其道而行之——从CString 到CByteArray?
【问题讨论】:
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());
【讨论】:
您需要考虑到,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 );
所以你需要考虑这是否真的是预期的行为。
【讨论】: