2

CArchive を使用して読み取りと書き込みとファイルを作成するコードがあります。調査の結果、ファイルのさまざまな部分からデータを読み取るときに、CArchive オブジェクトがその場所を変更することがわかりました。たとえば、ファイル構造がヘッダー、ボディ、フッターの順にあるような場合。誰かがフッターを読みたい場合、CArchive はファイル内の特定の場所に移動することによってのみフッターを読み取ります。これはこれによって行われます。

COleStreamFile stream;
//Stream is pointed to footer location.
stream.OpenStream(m_pStg, "Footer", nOpenFlags, pError);  // pStg is LPSTORAGE
CArchive ar(&stream, CArchive::load);

ここで知りたいのは、CArchive が読み取りまたは書き込みを行う場所です。バイト インデックス、ファイルの場所など。

4

1 に答える 1

3

CArchiveオブジェクトから直接位置を取得することはできませんが、基になるストリームから取得できます-COleStreamFileあなたの場合。CFile::GetPositionを呼び出すだけです。

例:

COleStreamFile stream;
//Stream is pointed to footer location.
stream.OpenStream(m_pStg, "Footer", nOpenFlags, pError);  // pStg is LPSTORAGE
CArchive ar(&stream, CArchive::load);
// Add some data.
ar << someData;

// And get the current position.
int currentPos = stream.GetPosition();
于 2013-05-28T11:58:54.103 に答える