在c++里面,自己定义的一个类怎么写入文件和从文件读出?

ALLAN_ONLY 2009-07-27 07:20:05

#include <iostream>
#include <fstream>

using namespace std;

class a
{ // 定义类
private :
int m;
public:
a();
a(int n);
~a();
};
a::a(){m=0;}
a::~a(){}
a::a(int n)
{ //构造函数
m=n;
}

int main()
{
int n;
cin>>n;
switch (n)
{
case 1 :
{
a a1(2);
ofstream ofile ("a");
ofile.write( (char *)&a1 ,sizeof (a1));
ofile.close();
}break;
case 2 :
{
a a2;
ofstream ofile ("a");
ofile.write( (char *)&a2 ,sizeof (a2));
ofile.close();
}break;
}

return 0;
}


我举的一个简单例子,一个类,不同的构造函数,以这种方式写入文件后,我该怎么读出来呢?
...全文
1558 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ALLAN_ONLY 2009-07-27
  • 打赏
  • 举报
回复
class a
{ // 定义类
private :
int m;
public:
a();
a(int n);
~a();
};
a::a(){m=0;}
a::~a(){}
a::a(int n)
{ //构造函数
m=n;
}

int main()
{
int n;


a a2;
ofstream ofile ("a");
ofile.write( (char *)&a2 ,sizeof (a2));
ofile.close();

a s;
ifstream ifile ("a");
ifile.read ((char *)&s,sizeof (s));
ifile.close();



return 0;
}


是可以的啊
ALLAN_ONLY 2009-07-27
  • 打赏
  • 举报
回复
就是只有一个构造函数
ALLAN_ONLY 2009-07-27
  • 打赏
  • 举报
回复
我有一个别的类 可以实现的
mstlq 2009-07-27
  • 打赏
  • 举报
回复
不是把类变成结构体……
而是弄一个新的结构体出来,类包这个含结构体
ALLAN_ONLY 2009-07-27
  • 打赏
  • 举报
回复
如果是唯一的构造函数呢
class a
{ // 定义类
private :
int m;
public:
a(int n);
~a();
};

不就可以了吗
ALLAN_ONLY 2009-07-27
  • 打赏
  • 举报
回复
哦 这么不就繁琐了吗 有类还得变成结构啊
mstlq 2009-07-27
  • 打赏
  • 举报
回复
将所有的数据封装在一个c风格的struct中,然后只向文件读/写struct的内容,然后将它们放进类里面

实际操作中,只读/写数据成员
ALLAN_ONLY 2009-07-27
  • 打赏
  • 举报
回复
这是例子 我的类不是这个
东西很多的 我是问怎么把整个类的结构读进去
mstlq 2009-07-27
  • 打赏
  • 举报
回复 1
将所有的数据封装在一个c风格的struct中,然后只向文件读/写struct的内容,然后将它们放进类里面。

class a 
{ // 定义类
private :
int m;
public:
a();
a(int n);
~a();
};


楼主这个类,其实要紧的数据只是一个int m而已,完全可以只把int m存到文件里;
读取的时候只从文件读一个int值n,然后调用构造函数A a(n)就行了……
lori227 2009-07-27
  • 打赏
  • 举报
回复

friend ostream& operator <<(ostream& ros,A& a);
friend istream& operator >>(istream& ris,A& a);


然后自己实现这两个函数
Alan S1 2009-07-27
  • 打赏
  • 举报
回复
CArcive
ALLAN_ONLY 2009-07-27
  • 打赏
  • 举报
回复
是啊,不错的方法.

那用read怎么弄呢,就当多学点.
lori227 2009-07-27
  • 打赏
  • 举报
回复
重载类的 << 和 >> 操作, 怎么存的就怎么读..
ALLAN_ONLY 2009-07-27
  • 打赏
  • 举报
回复
诚心请教.

65,178

社区成员

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

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