为了账号安全,请及时绑定邮箱和手机立即绑定

c++文件write函数问题?

c++文件write函数问题?

慕斯709654 2019-02-06 10:06:45
c++中如何把一个结构体写入文件,以及如何从文件中读出结构体呢?写了个程序不知道为什么编译错误,如下:#include<iostream>#include<fstream>using namespace std;struct a{int data;char name;struct a* aptr;};typedef struct a A;int main(){A a;a.data=1;a.name=2;a.aptr=NULL;A* b=&a;ofstream out;out.open("a.txt",ios::out|ios::binary);out.write(b,sizeof(A));out.close(); //in.open("a.txt",ios::in|ios::binary);return 0;}
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

编译提示信息应该告诉你了啊,write的第一个参数必须是const char *型的,你要强制转换一下
out.write((const char *)b,sizeof(A));
不过,结构中的指针成员写入文件是没有含义的,因为指针的值是数据在此次运行时内存中的偏移,下次再从文件中读出来这个地址值就无效了.

查看完整回答
反对 回复 2019-03-24
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

#include<iostream>

#include<fstream>

using namespace std;
struct a
{
int data;
char name;
struct a* aptr;
};
typedef struct a A;

int main()
{
A a;
a.data=1;
a.name=2;
a.aptr=NULL;
A* b=&a;
ofstream out;
out.open("a.txt",ios::out|ios::binary);
out.write((char*)b,sizeof(A));

out.close();
//in.open("a.txt",ios::in|ios::binary);
return 0;

}
上边这个程序编译没有错误了。
ostream& write ( const char* s , streamsize n );
这个是write的原型 第一个参数必须是指向char型的指针,第二个是大小
你传的是指向结构体的指针 所以不对



查看完整回答
反对 回复 2019-03-24
  • 3 回答
  • 0 关注
  • 1901 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信