在 c++ 中写入和读取复杂对象到文件

发布于 2024-10-10 07:44:14 字数 225 浏览 1 评论 0原文

我有一个对象,其中包含其他对象的多个向量作为成员。我想一次将该对象写入文件(以二进制模式),而不是写入每个成员。我怎样才能做到这一点? 在这种情况下,我想从 AccList 类中写入对象“A”(我的所有数据都保存在“A”中!) 这是我的类图: http://askus.ir/ClassDiagram1.png

I have an object with several vector of other objects as members. I want to write this object to the file all at once(in binary mode), instead of writing each members. How can I do that?
in this case i want to write object "A" from class AccList(all of my data saved in "A"!)
this is my ClassDiagram:
http://askus.ir/ClassDiagram1.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你如我软肋 2024-10-17 07:44:14

您可以使用 boost::serialization 来执行此操作,

您必须在对象中添加一个方法

template<class Archive>
void serialize(Archive & ar,  const unsigned int version)
{
    ar & this->foo & this->bar;
}

,此方法定义必须在之后存储什么成员

,为了保存您的对象,您必须执行以下操作:

std::ofstream ofs("filename");
boost::archive::binary_oarchive oa(ofs);
oa << data;

对于读取对象,其方式相同,

std::ifstream ifs("filename");
boost::archive::binary_iarchive ia(ifs);
ia >> data;

教程

you can use boost::serialization for do that

you must add one method at your object

template<class Archive>
void serialize(Archive & ar,  const unsigned int version)
{
    ar & this->foo & this->bar;
}

this method define what member has to be stored

after, for save your object you must do:

std::ofstream ofs("filename");
boost::archive::binary_oarchive oa(ofs);
oa << data;

for read the object, it's the same way,

std::ifstream ifs("filename");
boost::archive::binary_iarchive ia(ifs);
ia >> data;

tutorial

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文