现在的位置: 首页 > 综合 > 正文

BOOST.SERIALIZE序列化对象

2013年09月29日 ⁄ 综合 ⁄ 共 954字 ⁄ 字号 评论关闭
#include <iostream>
#include <sstream>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/serialization/utility.hpp>

using namespace std;

class Data
{
  friend class boost::serialization::access;
  _int64 m_data;
  template <class Archive>

  void serialize( Archive& ar, const unsigned int version )
  {
    ar & m_data;
  };

public:
  Data() : m_data( 0 ) {};
  const _int64& getData() const { return m_data; };
  void setData( _int64 val ){ m_data = val; }
};



int _tmain(int argc, _TCHAR* argv[])
{
    // 序列化对象
    ostringstream oss;
    boost::archive::binary_oarchive oar( oss );
    Data data;
    const Data& data_freeze = const_cast<Data&>( data );
    data.setData( 1000000000000000000 );
    oar << data_freeze;
    data.setData( 4000000000000000000 );
    oar << data_freeze;
    cout << "serialize: len:" << oss.str().size() << "\n   data:" << oss.str() << endl;

    // 反序列化
    istringstream iss( oss.str() );
    boost::archive::binary_iarchive iar( iss );
    Data data1;
    iar >> data1;
    cout << "data: " << data1.getData() << endl;
    iar >> data1;
    cout << "data: " << data1.getData() << endl;
    getchar();
    return 0;
}

抱歉!评论已关闭.