2013-03-18 82 views

回答

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()); 
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); 

所以你需要考慮這是否真的是預期的行爲。