Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写复杂的C++;要归档的对象 我有一个C++对象,看起来像这个< /P> class myClass { vector<OtherClass*> otherClassVector; AnotherClass* anotherClassObj; // A few other primitive types and functions } class-myClass { 向量类向量; 另一类*另一类OBJ; //其他一些基本类型和函数 }_C++_File_Serialization - Fatal编程技术网

编写复杂的C++;要归档的对象 我有一个C++对象,看起来像这个< /P> class myClass { vector<OtherClass*> otherClassVector; AnotherClass* anotherClassObj; // A few other primitive types and functions } class-myClass { 向量类向量; 另一类*另一类OBJ; //其他一些基本类型和函数 }

编写复杂的C++;要归档的对象 我有一个C++对象,看起来像这个< /P> class myClass { vector<OtherClass*> otherClassVector; AnotherClass* anotherClassObj; // A few other primitive types and functions } class-myClass { 向量类向量; 另一类*另一类OBJ; //其他一些基本类型和函数 },c++,file,serialization,C++,File,Serialization,将其存储到磁盘并以编程方式将其读回的最佳方法是什么? 在二进制模式下使用fstream读/写会起作用吗?还是应该使用boost序列化?为什么? 我不要求存储的文件是可读的。您可以使用流f(“filename”,std::ios::binary)的序列化对象仅当这些对象是POD类型时 其他任何事情都需要手动处理。举个简单的例子,如果对象包含任何指针,那么将保存这些指针的地址,而不是它们所指向的数据 对于更复杂的类型,您必须完全手动序列化它们(编写一个类或函数来保存该类中的所有POD数据,并对所有“

将其存储到磁盘并以编程方式将其读回的最佳方法是什么?
在二进制模式下使用fstream读/写会起作用吗?还是应该使用boost序列化?为什么?
我不要求存储的文件是可读的。

您可以使用流f(“filename”,std::ios::binary)的
序列化对象仅当这些对象是POD类型时

其他任何事情都需要手动处理。举个简单的例子,如果对象包含任何指针,那么将保存这些指针的地址,而不是它们所指向的数据


对于更复杂的类型,您必须完全手动序列化它们(编写一个类或函数来保存该类中的所有POD数据,并对所有“特殊”数据进行处理),或者使用boost序列化

您可以使用流f(“filename”,std::ios::binary)的
序列化对象仅当这些对象是POD类型时

其他任何事情都需要手动处理。举个简单的例子,如果对象包含任何指针,那么将保存这些指针的地址,而不是它们所指向的数据


对于更复杂的类型,您必须完全手动序列化它们(编写一个类或函数来保存该类中的所有POD数据,并对所有“特殊”数据进行处理),或者使用boost序列化

使用
boost::serialization
比编写自己的序列化程序更简单。如果其他类是具体类型(而不是基)-通过读/写进行序列化很简单,对于向量-只需保存大小和数组(如果您的myClass没有非POD类型),然后存储指向另一个ClassObj指针的元素…

使用
boost::serialization
比编写自己的序列化程序更简单。如果OtherClass是具体类型(而不是基)-通过读/写进行序列化很简单,对于vector-只需保存大小和数组(如果myClass没有非POD类型),然后存储一个ClassObj指针指向的元素…

。它比其他方法更有优势。

这可能会引起人们的兴趣。它比其他方法更有效。

看看这个fstream,在二进制模式下读/写是可行的,只要你不认为你可以一次性写出整个对象。您必须自己编写代码来编写每个单独的子对象加上向量大小和其他所有内容。您应该考虑使用boost来避免这种繁琐且容易出错的工作。查看一下这个二进制模式下的fstream读/写功能,只要您不认为可以一次性写出整个对象,它就可以工作。您必须自己编写代码来编写每个单独的子对象加上向量大小和其他所有内容。你应该考虑使用boost来避免这种繁琐且容易出错的工作。包含指针与对象是否为POD有什么关系?@Grizzly,没什么,这只是需要手动处理的一个例子。我意识到,但如果我不知道的话,我会认为从你的答案来看,这是有关联的formulated@Grizzly是的,你说得有道理。。。我改了一点,谢谢。包含指针与对象是否为POD有什么关系?@Grizzly,没什么,这只是一个需要手动处理的示例。我知道,但如果我不知道,我会认为从你的答案来看有关联formulated@Grizzly是的,你说得有道理。。。我改了一点,谢谢。