#include "obj.hpp" #include <assert.h> #include <fstream> #include <boost/archive/text_iarchive.hpp> #include <boost/archive/text_oarchive.hpp> int main(void) { char *filename = "save.txt"; const obj o1(-2, false); const obj o2; const obj o3(21, true); const obj *const p1 = &o1; //save the obj data {
//打开save.txt
std::ofstream ofs(filename); boost::archive::text_oarchive ar(ofs); //将o1 o2 o3 p1 的数据记录到 ar & o1 & o2 & o3 & p1; } obj restored_o1; obj restored_o2; obj restored_o3; obj *restored_p1; { std::ifstream ifs(filename); boost::archive::text_iarchive iar(ifs); iar & restored_o1 & restored_o2 & restored_o3 & restored_p1; } assert(restored_o1 == o1); assert(restored_o2 == o2); assert(restored_o3 == o3); assert(restored_p1 != p1); assert(restored_p1 == &restored_o1); return 0; }
#pragma once namespace boost { namespace serialization { class access; } } class obj { private: int d1_; bool d2_; public: obj():d1_(-1),d2_(false){} obj(int d1,int d2):d1_(d1),d2_(d2){} bool operator==(const obj &o) const { return d1_ == o.d1_ && d2_ == o.d2_; } private: friend class boost::serialization::access; template<typename Archieve> void serialize(Archieve &ar,const unsigned version) { ar & d1_ & d2_; } };
我的主要看的是这个例子http://www.codeproject.com/Articles/225988/A-practical-guide-to-Cplusplus-serialization
可能是我对C++不熟,在编译过程中却是老是通不过。
我想了半天,死活想不出,结果看到一篇blog,看见其添加了一个导入了一个库文件我也尝试了一下 g++ -o main main.o -lboost_serialization 结果居然通过了,
看了一下save.txt 文件居然 将obj中的变量数值记录了下来。这个就是序列化?
原文链接: https://www.cnblogs.com/zengkonw/archive/2011/10/08/2202966.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/33752
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!