Boost序列化之一
2011-12-31 23:50
162 查看
本来想自己实现一个简单的序列化以临时解决项目,然左思右想,自己实现一来时间不够充裕,二来稳定性、扩展性以及可移植性不是那么好把握,最终还是选择了一个开源库——boost。
boost中的串行化使用简单,易于扩展,如下例:
boost中的串行化使用简单,易于扩展,如下例:
#include <boost/serialization/vector.hpp> #include <boost/archive/text_iarchive.hpp> #include <boost/archive/text_oarchive.hpp> #include <boost/archive/binary_iarchive.hpp> #include <boost/archive/binary_oarchive.hpp> #include <string> #include <iostream> #include <fstream> using namespace std; class CSerialize { private: friend class boost::serialization::access; //数据成员 int m_nNum1; double m_dNum2; std::string m_strInfo; template<class Archive> void serialize( Archive & ar, const unsigned int file_version ) { ar & m_nNum1; ar & m_dNum2; ar & m_strInfo; } public: CSerialize(int _num1, double _num2, string& _strInfo) : m_nNum1(_num1), m_dNum2(_num2), m_strInfo(_strInfo){ } CSerialize(){} ~CSerialize(){}; void print() { cout << m_nNum1 << " " << m_dNum2 << endl; cout << m_strInfo << endl; } static void saveData(CSerialize& data, string fileName) { ofstream fout(fileName); boost::archive::binary_oarchive ar_out(fout); ar_out << data; } static void loadData(CSerialize& data, string fileName) { ifstream fin(fileName); boost::archive::binary_iarchive ar_in(fin); ar_in >> data; } ofstream& operator<<(ofstream& os); ifstream& operator>>(ifstream& is); protected: private: }; ofstream& CSerialize::operator<<(ofstream& os) { os << m_nNum1 << m_dNum2 << m_strInfo; return os; } ifstream& CSerialize::operator>>(ifstream& is) { is >> m_nNum1 >> m_dNum2 >> m_strInfo; return is; } int main(int argc, char *argv[]) { ofstream fout("test.vipp"); boost::archive::binary_oarchive ar_out(fout); CSerialize obj1(1, 2.5, string("Oh Oh ha ha tttt")); ar_out << obj1; fout.close(); ifstream fin("test.vipp"); boost::archive::binary_iarchive ar_in(fin); CSerialize new_obj; ar_in >> new_obj; fin.close(); new_obj.print(); CSerialize test_obj; CSerialize::loadData(test_obj, "test.vipp"); test_obj.print(); getchar(); return 0; }
相关文章推荐
- 测试了下boost的序列化反序列化功能
- C++Boost序列化(Serialization)库教程
- Boost - 序列化 (Serialization) (写得很好**)
- boost中的序列化类使用
- boost序列化问题(一)
- Boost文本序列化和二进制序列化的效率
- 序列化-boost
- C++11 下使用 Boost.Serialization 库实现智能指针的序列化
- Boost序列化学习之二——binary_oarchive追本溯源
- c++ python交互之boost.python 简集之序列化(pickle)
- boost序列化
- boost 序列化成 xml文件
- Boost.Serialization可动态配置序列化
- Boost - 序列化 (Serialization)
- boost--序列化库serialization
- boost序列化的一些进阶用法
- boost::serialization(2)序列化基类
- 测试了下boost的序列化反序列化功能
- 如何用boost::serialization去序列化派生模板类(续)
- [置顶] boost如何序列化 和反序列化 指针类(本身类也可以)