2013-03-18 6 views

ответ

3

Метод GetBuffer() класса CString возвращает необходимый вам массив. После этого вы можете скопировать его с помощью 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

Вы должны принять во внимание, что 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); 

Таким образом, вам необходимо рассмотреть, действительно ли это предполагаемое поведение.

Смежные вопросы