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 回答