我有一个代码,其中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将在哪个位置读取或写入。字节索引,文件位置或类似的东西。
答案 0 :(得分: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();