结构体输出的磁盘文件

zfm1988 2009-10-19 09:38:32
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
struct abc
{ string name;
string number;
float average;
struct abc *next;
};
int main()
{
abc *head=new abc,*p,*q;
ofstream outfile("d:\\12.dat");
p=new abc;
head->next=p;
do
{
q=p;
cout<<"输入学生姓名:"<<endl;
cin>> p->name;
cout<<"输入学生学号:"<<endl;
cin>> p->number;
cout<<"输入平均分:"<<endl;
cin>> p->average;
p=new abc;
q->next=p;
p->next=NULL;
}while(q->average!=0);
p=head->next;
do
{
outfile.write((char*)p,sizeof(*p)); //怎么写才能把p所指向的结构体内容输出到文件中 ,我的是错误。
cout<<p->name<<setw(10)<<p->number<<setw(10)<<p->average<<endl;
p=p->next;
}while(p->next!=NULL);
system("pause");
return 0;
}
...全文
90 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfm1988 2009-11-21
  • 打赏
  • 举报
回复
恩 知道啦!!现在弄清楚啦!!谢谢 大家
cphj 2009-10-20
  • 打赏
  • 举报
回复
改一句就行了
	do 
{
outfile <<p->name <<setw(10) <<p->number <<setw(10) <<p->average <<endl; //和输出到cout基本一样
cout <<p->name <<setw(10) <<p->number <<setw(10) <<p->average <<endl;
p=p->next;
}while(p->next!=NULL);
angel_su 2009-10-19
  • 打赏
  • 举报
回复
写入2进制的话,最好用基本类型固定长度的。你的结构里有string这个应该只有写入地址,如果你打算找出它来通常也会规定个长度,不然到时候要取出就麻烦。
zfm1988 2009-10-19
  • 打赏
  • 举报
回复
mars_man 请问下 我这个该怎么写,或者你还有跟好的算法啦!!!


上面的其他的回答就没看我的问题呀!!!不过还有感谢
aaajj 2009-10-19
  • 打赏
  • 举报
回复
  读写文件分为文本文件和二进制文件的读取,对于文本文件的读取比较简单,用插入器和析取器就可以了;而对于二进制的读取就要复杂些,下要就详细的介绍这两种方式

  1、文本文件的读写
  文本文件的读写很简单:用插入器(<<)向文件输出;用析取器(>>)从文件输入。假设file1是以输入方式打开,file2以输出打开。示例如下:

  file2<<"I Love You";//向文件写入字符串"I Love You"


http://blog.csdn.net/smstone/archive/2006/04/13/661483.aspx
mars_man 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zfm1988 的回复:]
不是,我的意思是把结构体数据整体输出的磁盘文件中!!我已经在上面注释了,就是那行错误啦!!
[/Quote]
结构体的内容应该就是那样的吧,只有结构体本身的二进制内容,至于其中有没有引用到其他数据是写不了的,没啥意义
aaajj 2009-10-19
  • 打赏
  • 举报
回复
outfile << p->name <<" " << p->number <<endl;
zfm1988 2009-10-19
  • 打赏
  • 举报
回复
不是,我的意思是把结构体数据整体输出的磁盘文件中!!我已经在上面注释了,就是那行错误啦!!
mars_man 2009-10-19
  • 打赏
  • 举报
回复
LZ的意思是要把 string name;
string number;
float average;
内容写出来吧,那下面的才是真正需要的数据
name.c_str()
number.c_str()
average

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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