请教,小弟刚学VC,我如何才能用CArchive一次读出多条记录(也就是多个数据流),以免减少对文件进行操作的次数呢,谢谢大家,代码如下;
        CFile cfile;
cfile.Open(m_ExeFullPath+pStructName,
   CFile::typeBinary|
   CFile::modeRead); cfile.SeekToEnd();          CArchive  ar(&cfile,CArchive::load);
    
ar>>strData;
我该怎么做,对了每次要读出的数据流的长度不等长,我在线等待,谢谢拉

解决方案 »

  1.   

    对了没有cfile.SeekToEnd();这一行
      

  2.   

    其实没有关系的,C++的流本身就是有缓冲的,也就是说并不是每次你调用IO函数都会引起磁盘操作,而是在IO量达到一定大小或关闭文件时才会更新磁盘文件。具体调节文件IO缓冲区的大小可以看MSDN关于CFile和CArchive的函数说明.
      

  3.   

    调节缓冲区大小就可以了。
    CArchive( CFile* pFile, UINT nMode, int nBufSize = 4096, void* lpBuf = NULL );看见了吗?nBufSize默认为4096,试着改大一点吧!
      

  4.   

    ar>>strData>>strData2>>strData3.
    hehe
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  5.   

    楼上兄弟tttc(Azure),你的意思是,如果每次进行>>操作并不一定每次都读磁盘,直到缓冲区的数据被读完,再进行读磁盘操作,是吗?如果这是这样的话,那就好了,真的是这样的吗,兄弟请回话,我机器上没装msdn,谢谢