gpt4 book ai didi

serialization - boost.serialization 的输出格式是什么

转载 作者:行者123 更新时间:2023-12-03 00:52:44 30 4
gpt4 key购买 nike

我尝试序列化一个向量和一个 map 容器,并通过 cout 输出它们的值。然而,我很难理解boost输出的含义。我的代码如下所示:

#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

我组成的值 1 3 5 之前的数字 9 3 0 是什么意思? 0 0 2 0 0 0 怎么样? “1”和“1”之间的“3”是否表示有 3 个字符?

最佳答案

我不确定 map 中的某些零(可能是某些版本号或跟踪级别),但其余的:

22 (length of the signature)
serialization::archive (signature)
9 (archive version, 10 on boost 1.53)
3 (vector size)
0 (item version)
1 3 5 (vector items)
0 (map class tracking level ?)
0 (map class version ?)
2 (map size)
0 (item class tracking _level ?)
0 (item class version ?)
0 (item version)
1 (key) 3 (value length) one (value)
2 (key) 3 (value length) two (value)

请注意,文本输出的内容和格式是 Boost 的内部事务,可能会随着 future 的 Boost 修订而变化,因此您的应用程序不应依赖于内部存档内容。

关于serialization - boost.serialization 的输出格式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16145910/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com