抱歉交叉发布.发布到邮件列表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工作正常.