msdn上面: 
        CFile f("G:\\22.txt", CFile::modeWrite | CFile::typeBinary);
          char buf[8];
buf[0]='a';
buf[1]='a';
buf[2]='a';
buf[3]='a';
buf[4]='a';
buf[5]='a';
buf[6]='a';
buf[7]='a';
CArchive ar(&f,CArchive::store,8,buf);
         ar.Flush();
         f.close; 
按道理是可以的,但是发现22.txt内为空啊
而且如果将CArchive ar(&f,CArchive::store,8,buf);改为
       CArchive ar(&f,CArchive::store);
       ar.WriteString( "My string." );
发现可以写入到22.txt.请问为什么阿

解决方案 »

  1.   

    你可以看MFC的代码,CArchive 有两个成员变量,m_lpBufCur and m_lpBufStart;
    简单构造CArchive ar(&f,CArchive::store,8,buf)后,然后再调用ar.Flush();
    m_lpBufCur  = m_lpBufStart,这时CArchive不做任何事情就返回了。调用ar.WriteString( "My string." );会改变m_lpBufCur的值,ar.Flush()就工作了。
    另外buf的大小至少是128。否则buf 会 = NULL
      

  2.   

    msdn良种方法都,我如果用CArchive ar(&f,CArchive::store,8,buf)的方法,怎样做呢
      

  3.   

    msdn 上的方法是对的,但是它没有写完全。你必须显式的调用WriteString来改变m_lpBufCur.