我正在尝试使用 LPSTREAM 将文本读入 CString,但它似乎无法正常工作,这是我正在调用的代码:
static HRESULT UTL_ReadStreamTxt(MyStorage* pSrcStg, const char* pszStream, CString* myCStr, int size)
{
HRESULT hrRet = STG_E_INVALIDPARAMETER;
LPSTREAM lpSrc = NULL;
ULONG ul;
TRY
{
USES_CONVERSION;
HRESULT hrSrc = pSrcStg->GetStg()->OpenStream(CT2COLE(strSrc),
NULL,
STGM_READ | STGM_SHARE_EXCLUSIVE,
0,
&lpSrc);
if (hrSrc != NOERROR)
{
hrRet = hrSrc;
}
else
{
hrRet = lpSrc->Read(&myCStr, size, NULL); // Read into CString
}
}
CATCH_ALL(e)
{
hrRet = STG_E_UNKNOWN;
}
END_CATCH_ALL
_AfxRelease((LPUNKNOWN*)&lpSrc);
return hrRet;
}
当它读入字符串时,Visual Studio 会说 CString 中的数据已损坏。
复合存储的流内容如下:
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
我不完全确定我是否正确使用了 Read(),我该如何解决这个问题?