我有一个看起来像这样的C ++对象
class myClass
{
vector<OtherClass*> otherClassVector;
AnotherClass* anotherClassObj;
// A few other primitive types and functions
}
将此存储到磁盘并以编程方式将其读回的最佳方法是什么? 在二进制模式下使用fstream读/写是否有效?或者我应该使用boost序列化?为什么? 我不要求存储的文件是人类可读的。
答案 0 :(得分:6)
使用boost::serialization
只是编写自己的序列化程序。如果OtherClass是具体类型(不是基础) - 通过读/写序列化很简单,对于vector - 只保存大小而不是数组(如果你的myClass没有非POD类型)然后存储元素,其中anotheClassObj指针指向...
答案 1 :(得分:3)
只有当这些对象是POD类型时,才能使用ofstream f("filename", std::ios::binary);
序列化对象。
其他任何东西都需要手动处理。举一个简单的例子,如果对象包含任何指针,那么将保存这些指针的地址,而不是它们指向的数据。
对于更复杂的类型,您必须手动完全序列化它们(编写一个类或函数来保存类中的所有POD数据并使用所有“特殊”数据做一些棘手的事情))或者使用boost序列化。
答案 2 :(得分:0)
C++_Middleware Writer可能会引起关注。它比其他方法some advantages。