如何用C++标准库中的fstream,把数据存成文件?谢谢。小弟分不多,包涵。

cccloveyf 2004-07-13 04:16:50
比如实现如下功能。(注:Lessons是一个全局的CLesson类对象。是CLesson Lessons[50];定义的)
void save()
{
FILE *fp;
if((fp=fopen("data.txt","wb"))==NULL)
cout<<"文件无法打开!"<<endl;
else
{
fwrite(Lessons,sizeof(Lessons[0]),last,fp);
fclose(fp);
cout<<last<<"个课程信息成功保存!"<<endl;
}
}

void load()
{
FILE *fp;
last=0;
if((fp=fopen("data.txt","rb"))==NULL)
cout<<"文件无法打开!"<<endl;
else
{
while(fread(&Lessons[last],sizeof(Lessons[0]),1,fp)==1)
++last;
fclose(fp);
cout<<last<<"个课程信息成功读取!"<<endl;
}
}
...全文
173 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiqi162002 2004-07-19
  • 打赏
  • 举报
回复
ifs.read(reinterpret_cast<char*>(&Lessons[last]), sizeof(CLesson));
while(!ifs.eof())//前要先读取一次
kaphoon 2004-07-18
  • 打赏
  • 举报
回复
while(!ifs.eof())判断是不是文件结束
c语言中的EOF
cccloveyf 2004-07-15
  • 打赏
  • 举报
回复
while(!ifs.eof())是什么意思啊?解释以下这个成员函数的意思,谢谢。
我试过了,存档一切没问题,读档有些问题,好象是while(!ifs.eof())的问题。
我是用栈做的,last是全局的。谢谢。
xjp6688 2004-07-13
  • 打赏
  • 举报
回复
up
idseaboy 2004-07-13
  • 打赏
  • 举报
回复

同时注意一下ios里面的一些定义。
Jinhao 2004-07-13
  • 打赏
  • 举报
回复
void save()
{
size_t last;
std::ofstream ofs("data.txt", ios_base::app);
if(!ofs)
cout<<"文件无法打开!"<<endl;
else
{
ofs.write(reinterpret_cast<char*>(&Lessons),sizeof(CLesson));
size_t last = ofs.tellp()/sizeof(Lessons);
ofs.close();
cout<<last<<"个课程信息成功保存!"<<endl;
}
}

void load()
{
std::ifstream ifs("data.txt")
size_t last=0;
if(!ifs)
cout<<"文件无法打开!"<<endl;
else
{
while(!ifs.eof())
{
ifs.read(reinterpret_cast<char*>(&Lessons[last]), sizeof(CLesson));
++last;
}
ifs.close();
cout<<last<<"个课程信息成功读取!"<<endl;
}
}

不过我觉得,楼主你的save有问题,我没有改,完全按照你给的save写的。在就是这个函数太死板了

24,854

社区成员

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

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