问题标签 [cereal]
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::uuid
试图序列化这个简单的类:
但我收到此错误消息
指向 uuid。启用此功能的升压序列化方法是添加
但这不适用于开箱即用的谷物。谷物文件说
谷物档案在 std::ostream 或 std::istream 对象上运行。
所以我尝试在已定义但没有运气的地方添加标题
c++ - C++ Cereal:序列化 C 风格的数组
可以/如何使用谷物库序列化数组。
IE
那是行不通的(我也不希望这样做)。也没有
(我认为这会起作用,因为它看起来像人们会使用的 boost 代码),这会产生编译错误:
/usr/local/include/cereal/cereal.hpp:79:17:注意:候选模板被忽略:替换失败:可变修改类型'unsigned char(&)[l]'不能用作模板参数 BinaryData binary_data(T && 数据,size_t 大小)
也没有
由于该方法似乎只支持 XML/Json 并且我想要一个二进制存档。
c++ - 谷物序列化和多态性
好的,所以我在 C++11 中遇到了谷物(http://uscilab.github.io/cereal/)的问题。
从抽象的意义上说,我有一个大图,我用大量连接边和顶点的共享指针对其进行序列化。边(和顶点)也附有属性。
现在这些属性之一(基类)是一个帐户(子类)。Account 也继承自 Idable,Idable 也是可序列化的。现在这里有一些相关的代码片段,显示了我的一些谷物用法。我将在这个上下文之后解释这个问题:
属性.hpp/cpp
idable.hpp/cpp
位置.hpp/cpp
帐户.hpp/cpp
所以当 mfin::Account 被序列化时问题就来了。mfin::Account 属于 std::list>。当我们进入 Idable 的序列化函数时,对象是无效的。
进入在段错误时停止的 gdb,我将一些堆栈帧向上移动到这一行:/usr/include/cereal/types/polymorphic.hpp:341。这是:
现在这就是 ptr 是什么:
一切看起来都很好。但是请注意,当我将其转换为 void* 时:
这当然是在 binding->second.shared_ptr(见下文)中发生的,它采用 const void*。
我使用谷物有什么问题会导致这种情况?这是我得到的最后一个错误:
c++ - 谷物 JSON 输出缺少右花括号
我正在使用Cereal C++ v1.1.1,类似于文档中给出的示例,我正在尝试以下操作:
我希望有以下内容:
但缺少右花括号。知道代码中缺少什么吗?
更新:
添加archive.finishNode()
似乎可以解决问题。但我会说这不是解决方案。根据operator()
文档,调用操作符序列化输入参数,我为什么要添加finishNode
额外的?
c++ - Boost 序列化在 32 位和 64 位机器之间不起作用。任何其他序列化/压缩库?
我正在尝试使用 boost 库在 64 位机器上序列化并在 32 位机器上反序列化。但是,它似乎不起作用。(我使用 1.57.0)。
如果我运行以下代码
32bit 机器的输出是37,64bit 机器的输出是41。
还有其他我可以使用的好的序列化库吗?麦片呢?
如果库也可以进行压缩(zlib/gzip 等),那就太好了。
c++ - How can a function modify a parameter passed in by value in C++?
Basically this is a question about semantics. I'm using Cereal library for (de)serialization in C++, and found its coding style interesting:
The tricky part is that I do not pass in the "out" by reference and ar() can still modify its value. Well in fact, the author just overrides the operator "()". And I found the corresponding lines in the source files.
I'm quite at a loss, especially the first line ("= delete") and things regarding "std::forward( args )...". I only saw some cases in which macros like va_arg are used and it's the first time that I've encountered something like this. Besides, what does "&&" stand for? Could anyone throw some light upon it?
c++ - C ++谷物档案类型专业化不起作用
我在 VS 2013 中使用 Cereal 1.1.2。
我已经尝试使用此处的类型进行归档专业化的示例:http: //uscilab.github.io/cereal/archive_specialization.html
但它不会与错误一起编译:
error C2665: 'cereal::make_nvp' : none of the 3 overloads could convert all the argument types ... while trying to match the argument list '(const std::string, const std::string)
我正在尝试使用示例中的代码段编译以下代码:
请注意,如果我删除 save() 函数重载,它会编译。但我的目标是能够使用映射键作为 JSON 键,所以它是这样的:
c++ - 如何手动创建谷物进口文件?
我想创建一个(json)文件manuyll(使用python)并将其与谷物一起加载到我的c++应用程序中。
使用 ceral 保存和加载工作正常。但是,我不清楚 json 文件中的 polymorphic_ids。
这里有一个更清晰的例子:这是由谷类框架生成的对象:```
```
当我观察数字生成时,第一个 ID 增加了。第二个数组使用第一个 ID 作为其多态 ID,并进一步增加数字。
那么为什么使用这些数字有什么逻辑吗?一直使用它们是否可以节省,或者当我在另一台机器上运行我的 c++ 导入器时这些会改变?
c++ - 使用虚拟继承对多态类进行 Cereal 序列化
我正在尝试使用 Cereal 1.1.2 序列化和反序列化多态类(具有虚拟继承)。我收到“访问冲突 - 没有 RTTI 数据!” 当我在反序列化后尝试将其向下转换为派生类时出现异常。当我使用普通继承而不是虚拟继承时,它工作正常。我已经在 Visual Studio 2013 社区版的项目设置中启用了 RTTI (/GR)。这是我的代码:
c++ - 谷物序列化:只读第一个变量
我正在用谷物库序列化一些数据。我正在序列化许多变量,其中float
, double
, std::vector
.
我把它写成
我可以回读_pts_size
吗_num_cams
?