demo_portable_archive.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 99 行
CPP
99 行
/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8//// demo_portable_archive.cpp//// (C) Copyright 2002-4 Robert Ramey - http://www.rrsd.com .// Use, modification and distribution is subject to the Boost Software// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)// should pass compilation and execution#include <sstream>#include "portable_binary_oarchive.hpp"#include "portable_binary_iarchive.hpp"#include <cstdlib>#include <boost/config.hpp>#if defined(BOOST_NO_STDC_NAMESPACE)namespace std{ using ::rand; }#endifclass A{ friend class boost::serialization::access; char c; int i; int i2; // special tricky case to check sign extension unsigned int ui; long l; unsigned long ul; template<class Archive> void serialize(Archive & ar, const unsigned int /* version */){ ar & c & i & i2 & ui & l & ul ; }public: bool operator==(const A & rhs) const { return c == rhs.c && i == rhs.i && i2 == rhs.i2 && ui == rhs.ui && l == rhs.l && ul == rhs.ul ; } A() : c(std::rand()), i(std::rand()), i2(0x80), ui(std::rand()), l(std::rand() * std::rand()), ul(std::rand()) {}};int main( int /* argc */, char* /* argv */[] ){ const A a; A a1; std::stringstream ss; { portable_binary_oarchive pboa(ss); pboa << a; } { portable_binary_iarchive pbia(ss); pbia >> a1; } if(! (a == a1)) return 1; ss.clear(); { portable_binary_oarchive pboa(ss, endian_big); pboa << a; } { portable_binary_iarchive pbia(ss, endian_big); pbia >> a1; } if(! (a == a1)) return 1; ss.clear(); { portable_binary_oarchive pboa(ss, endian_big); pboa << a; } { portable_binary_iarchive pbia(ss, endian_big); pbia >> a1; } return !(a == a1);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?