小编Ewa*_*ame的帖子

向量(反)序列化与Boost.serialization的向后兼容性

抱歉交叉发布.发布到邮件列表boost-users后一周没有任何回复我倾向于在stackoverflow发布问题.原帖,稍加重新编辑:

嗨列表,

我正在从Boost v1.35迁移到新版本.但是,我有一些遗留的序列化字符串,我想让新版本可读.

经过一些测试后,我发现显然较新的版本(在本例中为1.40但后来)无法从1.35生成的字符串中正确反序列化std :: vector实例.任何人都可以指出我的问题可能是什么问题吗?

非常感谢!

埃瓦尔德

== ==详细

我使用文本存档和gcc版本4.4.1(Ubuntu 4.4.1-4ubuntu9)

测试向量是具有2个项的结构,长整数1和2.

各个lib版本的归档字符串:

1.35:archive: 22 serialization::archive 4 2 1 2
1.40:archive: 22 serialization::archive 5 2 0 1 2

现在:

// includes
#include <boost/serialization/vector.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>

std::vector<long> testvector;
std::string val = "22 serialization::archive 4 2 1 2"; // v1.35 archive
{
std::stringstream ss(std::stringstream::in | std::stringstream::out);
ss << val << std::endl;
boost::archive::text_iarchive ia(ss);
ia >> BOOST_SERIALIZATION_NVP(testvector);
}
Run Code Online (Sandbox Code Playgroud)

使用lib v1.40执行时的结果:testvector包含两个元素 {2, 2}- 而不是{1, 2}

注意:具有相同lib版本的s11n和de-s11n工作正常.

c++ serialization boost

6
推荐指数
1
解决办法
548
查看次数

标签 统计

boost ×1

c++ ×1

serialization ×1