我嘗試序列化矢量和地圖容器並通過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