问题标签 [boost-serialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3362 浏览

c++ - 使用 boost 序列化从 XML 加载类

我正在尝试从 XML 文件加载一个简单的类,但出现以下错误:

我做错了一定是愚蠢的,但我不知道是什么。有人有想法吗?这是我的代码:

0 投票
3 回答
566 浏览

c++ - 可移植存档不在 GCC 下编译

我需要(反)序列化 Windows 和 Linux 上的数据(并在两者之间传输文件)。我想使用可以在示例中找到的 Boost 序列化库的可移植二进制档案,例如参见http://boost-doc-zh.googlecode.com/svn-history/r380/trunk/libs/serialization/example /

这在 Windows (VS 2008) 上运行良好,但无法在 GCC 4.3.2 下编译并出现以下错误。

有人可以提出解决方案吗?

非常感谢!

0 投票
1 回答
939 浏览

c++ - 寻找 Boost message_queue 和序列化用法的简单示例

任何人都可以分享一起使用 boost message_queue 和序列化的小型工作示例吗?我想使用类在进程之间交换数据,但停留在我的研究中。

0 投票
3 回答
6093 浏览

c++ - 调用派生类的模板函数

我在 C++ 中遇到问题,在调用派生类的函数时有一个指向基类的指针。

编辑:一些答案将我推荐给CRTP

但我的观点是我需要有一个指向“Base*”类而不是“Base*”的指针,因为我不知道当前正在处理的类型(当前实例是从某种工厂创建的)。

课程:

用法:

我不能使 func 虚拟,因为该语言不支持虚拟模板功能。

仅当只有类具有模板参数时才允许,但如果其中的函数具有模板参数则不允许。

我已经看到在 Boost.Serialization 中解决了类似的问题,但无法理解解决方案。

谢谢,

科比·梅尔

0 投票
2 回答
1301 浏览

c++ - 使用 boost::serialization 大大增加了二进制大小

我在我的应用程序中使用了相当复杂的数据结构(主要使用 STL 容器),并使用 Boost (v1.34) 对它们进行序列化。

每当我使用调试符号 (gcc -g) 进行编译时,生成的可执行文件都会变得很大——大约 25 MB。剥离所有调试符号会将大小减小到 ~3 MB。

我试图确定大小增加的原因,似乎序列化方法是原因。特别是,调用序列化的模块的目标文件(如“oarchive << myObject”之类的代码)很大,注释掉序列化部分会显着减小大小。

是否可以阻止这些符号的生成,或者有选择地去除它们?
剥离所有符号不是一种选择,因为我需要为自己的代码调试符号。

0 投票
1 回答
1074 浏览

c++ - 如何使用 boost 序列化 3D 数组?

好的,我最近切换到 boost 并且我部分理解序列化简单对象或简单类(boost 教程让我感到困惑),但是如何序列化包含类成员的 3D 数组?

我有一个名为 TileList 的数组(std::vector),它包含属于 Tile 类的对象,而 Tile 类只包含两个变量 int TileID 和 int TilePassability。

我尝试像序列化教程在非侵入式方法和 STL 容器方法中那样做,但我只是得到一堆错误作为回报。有人可以解释如何正确地做到这一点吗?谢谢你。

0 投票
1 回答
1361 浏览

c++ - 使用映射提升二进制序列化并在序列化时加倍崩溃

这是代表我的问题的示例。除非 finalTime 大于 25,否则该映射将完全正常地序列化。通过 boost 单元测试,我得到了 std::exception 输入流错误。此外,此代码使用 polymorphic_text_archives 也能正常工作。读取地图时发生错误。

0 投票
2 回答
2423 浏览

c++ - 提升序列化和双打

我正在尝试使用 boost 序列化库将一个类序列化为一个字符串,并且我的类中包含几个双成员变量。

下面是我用来序列化的代码:

这是我的 Point 类中的序列化方法:

当我序列化为字符串时,boost 似乎没有像我预期的那样处理双精度到字符串的转换(似乎存在舍入问题)。稍微研究一下,看起来其他人也报告了同样的行为。我也了解与将双精度数转换为字符串相关的精度相关问题,反之亦然,以及这如何导致问题。

奇怪的是,我不明白的是,当我使用 stringstream 本身并将双精度重定向到流时,或者当我使用 boost 的 lexical_cast 函数从 stringstream.str() 转换回来时,这似乎不会发生加倍。在发现 boost 有自己的序列化/反序列化类之前,我实际上已经使用 stringstream 和 lexical_cast 调用编写了自己的类,并且它没有问题。我真的希望我不必放弃序列化库并回到我以前的状态。希望只有一些设置/特征/等。我迷路了。

0 投票
1 回答
1013 浏览

java - Boost 序列化文本存档是跨语言的吗?

Hy...我尝试更好地解释我的问题...我在通过 TCP 连接发送数据之前使用 boost 序列化文本存档...现在我需要将接收到的数据传递给 Java 应用程序...所以我会知道是否序列化流仅由数据或数据 + 提升序列化(标签、代码等)组成...在这种情况下,我唯一将数据传输到 java 应用程序的机会是在传输之前过滤它们?谢谢。 ..

0 投票
3 回答
1241 浏览

c++ - 是否可以重用 binary_oarchive 实例?

我的问题与五年前在此线程中讨论的问题相同(没有好的答案)。

我将我的对象序列化为字节缓冲区,如下所示:

当我在一个循环中执行此操作时,性能非常糟糕:我每秒获得约 14,000 个对象。

我已将问题归结为 binary_oarchive 的重新创建。如果我只是在循环中使用相同的存档实例写入相同的字符串,我会得到 ~220,000 个对象/秒,但是,对象会一个接一个地序列化,这不是我想要的:我想清除并在每个对象被序列化后重用相同的缓冲区(寻找它的开头)。

我怎样才能做到这一点?