C++ 中基础中boost的序列化的例子

#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】免费获取数百本计算机经典书籍

    C++ 中基础中boost的序列化的例子

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/33752

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午10:49
下一篇 2023年2月8日 上午10:51

相关推荐