我有一个代码,其中使用 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 将在哪个位置读取或写入。字节索引、文件位置或类似的东西。
最佳答案
您无法直接从 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();
关于c++ - CArchive 当前在文件中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16790732/