fstream 的read 和 write

lovecreak 2007-07-18 12:05:12
我想用二进制的方式读写数据:

#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;
}


还是不对问题出在哪呢?
...全文
1198 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2007-07-18
  • 打赏
  • 举报
回复
如果要用 read write,
就按照数据块的方式读写,
不要使用 for 了。

for(int i=0;i<999;i++)
ofile.write((char*)(a + i),sizeof(int));
==》
ofile.write((char*)a,sizeof(int)*999);

for(int i=0;i<999;i++)
ifile.read((char*)(b + i),sizeof(int));
==》
ifile.read((char*)b,sizeof(int)*999);
我啃 2007-07-18
  • 打赏
  • 举报
回复
既然要用二进制那么打开模式一定应该是ios::binary
jixingzhong 2007-07-18
  • 打赏
  • 举报
回复
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]; //读取时候自动会跳过空格分割符号
我啃 2007-07-18
  • 打赏
  • 举报
回复
ifile.open("c:\\file.data");->ifile.open("c:\\file.data",ios::binary);
ofile.open("c:\\file.data");->ofile.open("c:\\file.data",ios::binary);
lovecreak 2007-07-18
  • 打赏
  • 举报
回复
我给完分了 怎么没显示?
lovecreak 2007-07-18
  • 打赏
  • 举报
回复
谢谢 明白了

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧