将对象写入cpp中的文件

时间:2011-08-20 15:29:45

标签: c++ oop file

我正在尝试将对象的内容写入文件。这是我的代码

void Write_data_intoFile(Customer c1)
{
ofstream fout("cust_details.txt", ios::out | ios::app); 
fout.write(reinterpret_cast<char*> (&c1),sizeof c1);
fout.close();
}

这就是我调用函数的方式

c[ Customer_count ].Write_data_intoFile(c[ Customer_count ]);

程序运行正常,但内容未写入文件中。它显示一个红色标记,表示无法打开文件。如何解决这个问题

class Customer
{
char name[25];
int id;
}

我通过

全局创建了对象
Customer c[20];

我正在尝试以文本格式编写

2 个答案:

答案 0 :(得分:3)

好的,首先你需要为Customer的文本I / O编写一个函数。传统上,该函数称为运算符&lt;&lt;所以你需要这样的东西

ostream& operator<<(ostream& out, const Customer& c)
{
  return out << c.name << ' ' << c.id << '\n';
}

也许(很难确定)您需要将此功能声明为您的Customer类的朋友,如果您收到有关访问或私有的错误,那么您可能需要添加此行

friend ostream& operator<<(ostream& out, const Customer& c);

在您的客户类中。

然后你需要从你的其他函数中调用这个函数,比如这个

void Write_data_intoFile(Customer c1)
{
  ofstream fout("cust_details.txt", ios::out | ios::app); 
  fout << c1;
  fout.close();
}

然后你真的需要阅读一本关于C ++的好书,否则很难得到这些东西。任何问题再次发布。

答案 1 :(得分:2)

而不是以潜在危险的方式重新发明轮子Boost.Serialization可以为您解决这个问题,隐藏脏的细节。