我尝试序列化矢量和地图容器并通过cout输出它们的值。然而,我很难获得助推输出的意义。我的代码如下所示:boost.serialization的输出格式是什么
#include <iostream>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/map.hpp>
#include <boost/assign.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <sstream>
#include <fstream>
using namespace std;
int main()
{
vector<int> v = boost::assign::list_of(1)(3)(5);
map<int, string> m = boost::assign::map_list_of(1,"one")(2,"two");
std::stringstream ss;
boost::archive::text_oarchive oa(ss);
oa<<v<<m;
vector<int> v_;
map<int,string> m_;
boost::archive::text_iarchive ia(ss);
ia>>v_>>m_;
boost::archive::text_oarchive ib(cout);
ib<<v_<<m_;
return 0;
}
输出看起来是这样的:
22 serialization::archive 9 3 0 1 3 5 0 0 2 0 0 0 1 3 one 2 3 two
什么是数字9 3 0的值1 3 5我之前撰写的含义?那么0 0 2 0 0 0? '1'和'one'之间的'3'是否意味着有3个字符?
我试了一些其他的例子,看起来像前8个字节总是22,所以22必须是一些幻数,而不是归档的大小。其实我相信boost :: serialization没有帧格式。 – CyberSnoopy 2017-06-20 19:38:48