0

に変換CByteArrayするのCStringは非常に簡単です。しかし、どうすれば逆にできCStringます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

CString通常、aの1文字は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 に答える