我正在尝试将对象的内容写入文件。这是我的代码
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];
我正在尝试以文本格式编写
答案 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可以为您解决这个问题,隐藏脏的细节。