困惑中,请高手帮帮我!

sbg 2002-11-05 10:30:04
我以前是学c的,现在该学c++了,我发现在c里面从文件里面读出一个数组可以这样
FILE *fp;
fp=fopen("1.out","wb");
int b[30];
fread(&b,sizeof(int),30,fp);
但是我在c++里面我是这样用
ifstream in("1.out");
int a[30];
然后我想用文件1的数据初始化我定义的新数组,我不知道该怎么做,请高手们指点
...全文
26 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyc_nj 2002-11-18
  • 打赏
  • 举报
回复
如果你只是为了实现这个功能,可以继续用C的方法.
如果你要对C++实现有个了解,那你应该先找些书,把这方面看一下.(我想这是有必要的).
另外,在你开始用C++的文件操作方法时,一定要注意operator>> 和read方法的区别,read比较接近原来C里的操作, 所以,IT_worker(IT工人) 的方法你可以改一下.in.read((char *)a, 30 * sizeof(int));
用operator>>在VC6下可能不行.
shinedreamnt 2002-11-15
  • 打赏
  • 举报
回复
sbg(宝宝酥):a[30]定义为 char a[30];
yan4545 2002-11-15
  • 打赏
  • 举报
回复
for(int i=0;i<30;++i)
in>>a[i];

完全可以!!!
放心去做吧!
zhuoshenme 2002-11-06
  • 打赏
  • 举报
回复
用STL地解决方案

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <fstream>

using namespace std;

int main()
{
ifstream in("1.out");

vector<int> a(istream_iterator<int>(in),
istream_iterator<int>());

copy(a.begin(),a.end(),
ostream_iterator<int>(cout,"\n"));

char c;
cin>>c;

return 0;
}
北极猩猩 2002-11-06
  • 打赏
  • 举报
回复
for(int i=0;i<30;++i)
in>>a[i];
sbg 2002-11-06
  • 打赏
  • 举报
回复
zhuoshenme(卓什么) 谢谢你的方法,可是我对stl还不是很了解。
sbg 2002-11-06
  • 打赏
  • 举报
回复
IT_worker(IT工人) 我用你的方法试了,好像不行,编译器提示istream::read(char *,int)' : cannot convert parameter 1 from 'int [30]' to 'char *' read第一个参数必须是char*
IT_worker 2002-11-06
  • 打赏
  • 举报
回复
你的文件是二进制的吧?仍然用FILE不是可以吗?如果一定要用iostream的话试试用read代码如下
ifstream in("1.out");
int a[30];
in.read(a,30);

24,854

社区成员

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

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