读书人

fstream 的read 和 write解决思路

发布时间: 2012-02-10 21:27:42 作者: rapoo

fstream 的read 和 write
我想用二进制的方式读写数据:

#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char *argv[])
{
int a[999],b[999];
ofstream ofile;
ifstream ifile;

for(int i=0;i <999;i++) a[i]=i;

ofile.open( "c:\\file.data ");
ofile.write((char*)a,sizeof(int)*999);
ofile.close();

ifile.open( "c:\\file.data ");
ifile.read((char*)b,sizeof(int)*999);

for(int i=0;i <999;i++) cout < <b[i] < <endl;

system( "PAUSE ");
return EXIT_SUCCESS;
}

结果显示从的二十几个后就是混乱数字 而且有负数 我想可能是
write 和 read 不能一次执行太多数据 然后我修改了一下:

#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char *argv[])
{
int a[999],b[999];
ifstream ifile;
ofstream ofile;

for(int i=0;i <999;i++) a[i]=i;

ofile.open( "c:\\file.data ");
for(int i=0;i <999;i++)
ofile.write((char*)(a + i),sizeof(int));
ofile.close();

ifile.open( "c:\\file.data ");
for(int i=0;i <999;i++)
ifile.read((char*)(b + i),sizeof(int));

for(int i=0;i <999;i++) cout < <b[i] < <endl;

system( "PAUSE ");
return EXIT_SUCCESS;
}


还是不对问题出在哪呢?


[解决办法]
ifile.open( "c:\\file.data ");-> ifile.open( "c:\\file.data ",ios::binary);
ofile.open( "c:\\file.data ");-> ofile.open( "c:\\file.data ",ios::binary);

[解决办法]
for(int i=0;i <999;i++)
ofile. < <a[i] < < " "; //空格分割数据
ofile.close();

ifile.open( "c:\\file.data ");
for(int i=0;i <999;i++)
ifile> > b[i]; //读取时候自动会跳过空格分割符号

读书人网 >C++

热点推荐