我把一个double**类型的一个二维数组用二进制方式写入一个文件,可是出现一个问题,如果我的数据是一次性的用 ofstream fout("D:\\file.dat", ios::binary)打开文件,把一个double**类型的一个二维数组的往文件中全部写入是没有问题,再读出出来也和原来一样;但是如果我用 ofstream fout("D:\\file.dat", ios::binary|ios::app),也就是追加的方式,我只能读出第一次添加的double**类型的一个二维数组,以后追加的数据读的时候就会方式异常。
这是写文件的代码:
double ** tempchar;
/////这里省略开Buffer,赋值的代码 ofstream fout("D:\\file.dat", ios::binary|ios::app);  fout.write((char*)tempchar,m_Plot3D.m_memSize);
fout.close();我想请问是不是二进制文件是不是不能用追加方式添加数据

解决方案 »

  1.   

    答案是肯定可以的
    我写的测试代码是能够正常读取追加的数据的
    ofstream fout("test.dat", ios::binary|ios::app);
    int x =160;
    fout.write((char*)&x,4);
    fout.write((char*)&x,4);
    fout.close();
    ifstream fin;
    fin.open("test.dat", ios::binary);
    int nw ;
    fin.read((char*)&nw,4);
    fin.read((char*)&nw,4);
    fin.close();
    cout<<nw;
    提示:1.ifstream的打开方式里不能有ios::app
          2.正确读取数据的前提是文件中当前的读取位置,读取的字节数,以及欲传给变量的内存大小