问题标签 [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.
c++ - 提升序列化省略包装器的版本
我如何告诉 boost 对于特定结构它不应该写入/读取类“版本”标识符?
我正在编写一些包装类,用于以较小的方式序列化某些类型(如可变长度整数)。如果包装器编写了一个类版本,则大小减小的全部意义就丢失了(在大多数情况下最终会变大)。
例如,假设integer a
我将替换此代码:
有了这个:
我看到了这个is_wrapper
特征,但我真的找不到任何关于它的作用的文档,或者它是否有帮助。
c++ - 使用 boost 序列化时的链接器错误
我正在使用增强序列化。我用: 编译-L/opt/local/lib -lboost_serialization -stdlib=libc++
,但有几个(不可搜索的)错误:
我正在序列化一个std::vector<std::string>
:
我的boost安装有问题吗?
boost 库是包含 32 位和 64 位机器代码的通用二进制文件(所以我猜这不是问题):
sudo port install boost +universal
我在 Mac OS X 10.7 上安装了 boost 。
c++ - 尝试使用 Boost 序列化库时出错
我做了一个简单的程序来重现问题:
代码编译正常,但在运行时出现以下错误:
在调试器中,我可以看到当 boost 尝试反序列化name
变量时会发生错误。
谁能帮我弄清楚我做错了什么?
更新
我在 Mac OS X Lion 上并使用 GCC 4.6.2 ( g++-mp-4.6 (GCC) 4.6.2
) 和 boost 1.48 版本。两者都通过 MacPorts 安装。
命令行是:
您可以在此处从 subversion 签出代码:http: //stacked-crooked.googlecode.com/svn/trunk/Playground/Serialization。
更新
我在 Linux GCC 4.6.1 和 boost 1.48 上进行了测试,它运行良好。不知何故,这一定是我在 Mac 上的配置所特有的问题。
c++ - 如何为 std::stack 使用 boost::serialization?
我知道我们可以将 boost::serialization 用于 std::vector 、 list 、map 等,只要我包含相应的 boost 头文件,例如:
但是我怎么能对 std::stack 使用 boost::serialization 呢?
谢谢
c++ - 如何使用 Boost 序列化更新对象?
假设我们有一堂课std::map<string, string>
。假设我们有一个它的实例,其中包含[Jon : Smith; Sara : O'Connel]
. 我们将其序列化并归档。现在我们用这样的地图内容创建了它的另一个实例[Jon : AnotherSmith; Brian : Gor]
。我们将其序列化并归档。现在我们有 2 个存档!)我想知道我们如何将 tham 2 反序列化为一个对象实例,我们如何设置数据从哪些存档覆盖我们想要获取:[ Sara : O'Connel; Jon : AnotherSmith; Brian : Gor]
?
c++ - 把一个类的序列化放到一个DLL中
我正在寻找一个(工作)示例,用于外部序列化 DLL 中的类结构。目前我找不到任何例子。Boost 文档只是说明了一些宏,论坛和新闻组只是在讨论其解决方案的具体问题。
所以我要求一个(外部)序列化类结构的示例,如下所示。除了类代码,我还添加了一些用于序列化的代码(这不起作用,请参阅底部的错误消息)。
到目前为止,我所拥有的都是这样的代码:
序列化Foo.h
序列化Foo.cpp
序列化吧.h:
序列化吧.cpp:
序列化代码进入 DLL 并应在另一个使用类 Foo 和 Bar 的项目中使用。一切编译正常,但在运行时我收到消息
unregistered class - derived class not registered or exported
那么我是否使用了错误的宏?我错过了一个宏吗?上面的代码是正确的还是存在某种结构错误?也许这对很多其他人也很有用,我不认为将类的序列化放入 DLL 是非常奇特的......
c++ - 序列化和反序列化位域
我收到了一份文档,该文档定义了一组通过串行通信通道传输和接收的消息。我想获取传入的消息并将它们反序列化为对象,并序列化我的出站消息。线路上的编码已建立且不可更改,并且由标头中的各种位域和不同的有效负载组成,例如,
我看了一下 using protobufs,但似乎已经建立了他们的 varint 编码方法。我也看过boost-serialization,但根据我到目前为止所读到的内容,编码是如何完成的并不完全清楚。
所以,有几个问题:
- 我可以使用 boost-serialization 将我的字节流转换为对象吗?
- 为了不必滚动我自己的序列化例程(维护混乱),是否有完成我的任务的首选机制(例如,自定义提升序列化存档,另一种我没有发现的方法)
c++ - 是否有类似 Python 的 C++ 的 StringIO/CStringIO 之类的东西?
我正在使用 Boost 的序列化库序列化大量数据以通过网络发送。
Boost 的序列化库需要一个用于序列化和反序列化的中间文件。正在传输的数据量使执行所有这些操作变得很尴尬。把事情记在心里会好得多。
C++ 中是否有任何类似于 Python 的 cStringIO/StringIO 的东西可以用来伪造 Boost 的序列化?
提前致谢。
c++ - 提升序列化和命名空间
我是使用 Boost 序列化的新手。我正在使用 xml 序列化和非侵入式版本。我一步一步地按照教程(来自 Boost 网站)进行操作,我的代码运行良好。
当我将我的类(代码分为 .h 和 .cpp 以及一个 main.cpp 文件)放在命名空间(ns_mytests) 中时,问题就出现了。在这种情况下,编译器(g++)会抱怨,我有以下错误:
可以肯定我做错了什么,但我找不到我的错误。
任何帮助表示赞赏。
谢谢,西叉