问题标签 [yaml-cpp]

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 回答
101 浏览

yaml-cpp - Yaml-cpp parser doesn't handle key:value fragment correctly

today I found following strange behavior in yaml-cpp library.

Following yaml fragment:

is correctly parsed as key:value element with key=a and value=b. But when I updated fragment to this:

fragment is evaluated as scalar value "a:b".

Is this correct behavior? And is there a simply way how to force parser to evaluate this fragment as key:value ?

Thanks!

0 投票
2 回答
134 浏览

c++ - 如何判断我是否已经处理了一个节点

我正在处理包含许多冗余值的大文件(使用 YAML 的锚点和引用)。我对每个结构进行的处理都很昂贵,我想检测我是否正在查看对我已经处理过的锚点的引用。在 Python(使用 python-yaml)中,我通过简单地构建一个由 id(node) 键入的字典来做到这一点。然而,由于 yaml-cpp 使用 Node 作为引用类型,这似乎在这里不起作用。有什么建议么?

这类似于Retrieve anchor & alias string in yaml-cpp from document,但是尽管该功能足以解决我的问题,但这不是必需的——如果我能以某种方式获得基于节点内部地址的哈希,例如,那很好。

我正在做的昂贵的事情是计算每个节点的哈希值,包括它自己及其子节点。

0 投票
0 回答
1689 浏览

c++ - 带有 QTcreator 的 YAML-CPP

我尝试在 Windows 7 的 cmake 中使用 yaml-cpp

我按照教程构建了 cmake 并获得了 yaml-cpp.dll 、 yaml-cpp.lib 、 yaml-cpp.exp

我将它们保存在我项目的 libs 目录中。

我在我的专业文件中添加。包含文件添加了

这是我的 yaml-cpp 目录,其中包含所有包含文件。

在我使用的程序中

这一切都在编译没有错误。但是当我添加

我得到了对 Yaml::Node ERROR 的未定义引用

我不知道我忘了链接什么。

你有想法吗?谢谢你的帮助

0 投票
1 回答
1111 浏览

yaml-cpp - How to deserialize a vector with Yaml-Cpp?

I am using Yaml-Cpp to generate the input string to begin with. It seems I am somehow generating an incorrect serialization of the vector, though, because when I try to access that member from a loaded Yaml Node, I get "TypedBadConversion".

Entirely besides helping understand how to generate the Yaml to begin with (which I am interested in as well!) does anyone see why the string in question is invalid? Here is a test program and its output:

Test Program

Output

0 投票
2 回答
2879 浏览

c++ - 为 yaml-cpp 获取存储在 YAML::Node 中的值的类型

鉴于此代码:

如何检查 YAML 节点“数据”中包含的数据是整数、浮点数还是字符串?注意:我不想检查节点是否是标量、映射、序列等。

0 投票
0 回答
395 浏览

yaml-cpp - 如何序列化/反序列化 YAML::Binary?

更新

现在看来,放在向量中的任何东西都会中断。我试过 char 和 u/int/8/16/32 ,它们都会产生某种错误。我有点困惑。我的代码中可能有错误,但我不确定 YAML 应该是什么样子,所以我可能没有很好地寻找数据何时变得不正确。

来自 Yaml-Cpp 的 YAML::Binary 完成了吗?我尝试将我的数据序列化为 int,但 Yaml-Cpp 似乎对 int 和 char 感到困惑,这通常不会奏效。相反,现在我正在尝试使用 Yaml::Binary,但是当我尝试在另一端恢复 YAML::Binary 节点时,我在另一端收到错误。具体来说,这个块失败了:

3: 0\n6:WAUAAAAAAABYBQAAAAAAAP////a1pUVW14d2VGVldhRzlWTWtwSVZXNXdXR0V4Y0doV2FrcExVakpPUm1KR1pGZGlWa1YzVmxkd1IxbFhUWGhVYmxaVVlrWktjRlZzYUVOWFZscDBaVWM1VWsxcldraFdNbmhyV1ZaS1IxTnNVbFZXYkZwb1dsZDRWMlJIVmtoU2JGcE9ZVEZaZWxkVVFtRlVNVmw1VTJ0a1dHSlhhRmRXYTFaaFlVWmFkR1ZHVGxkV2JGb3dXa1ZrYjFSck1YUlVhbEpYWVRGS1JGWlVSbFpsUmxaWllVWlNhV0Y2VmxwWFZsSkhVekZzVjJOR2FHcGxhMXBVVlcxNGQyVkdWbGRoUnpsV1RXdHdTVlpYTlhkWFIwVjRZMGRvVjJGcmNFeFZha3BQVW0xS1IxcEdaR2xXYTFZelZteGtkMUl4YkZoVVdHaFZZbXhhVlZscldrdGpSbFp6WVVWT1dGWnNjREJhVldNMVZXc3hjbGRyYUZkTmJtaHlWMVphUzFJeA==\n7: /USER_NAMES/src/sockets/rsc/atkrscs.tar.gz\n1: 0\n4: 0\n5: 651633\n2: 000tar.gz\n1: 0\n4: 0\n5: 651633\n2: 0tar.gz\n1: 0\n4: 0\n5: 651633\n2: 0

作为:

terminate called after throwing an instance of 'YAML::ParserException' what(): yaml-cpp: error at line 7, column 7: unknown escape character:

我应该怎么办?还有另一种发送/接收二进制文件的方法吗?我做错什么了吗?

0 投票
1 回答
817 浏览

c++ - 如何为 YAML::Emitter 重载 << 运算符以序列化包含另一个自定义类的向量的自定义类

0 投票
1 回答
306 浏览

c++ - cocos2d-x 高效稳定的 YAML 解析器

我正在使用 cocos2d-x 和 C++ 开发游戏,我需要为此应用程序加载一堆 YAML 文件。我尝试使用yaml-cpp库,结果非常好。

问题是这个库似乎非常不稳定(至少在 iOS 上的 cocos2d-x 下),因为几乎 20% 的时间它无法加载相同的 YAML 文件并抛出“未找到地图结尾”、“无效地图元素” ,或类似的错误。

我遵循了HowToParseADocument指南,所以我认为我做对了。但是,由于它不是 100% 可靠的,我正在寻找更稳定的东西。例如:

解析器通常会在parser.GetNextDocument(doc)调用时中断。我要阅读的文档是简单的 YAML,其中包含key: value以下简单形式的列表:

编辑

我不允许透露原始 YAML 文件的内容,但我可以给你一些信息:

  1. 它仅包含映射,而不包含数组、别名或其他特定结构
  2. 那些values 是整数、浮点数或字符串
  3. 它已经用这个免费的工具进行了检查,并取得了成功。

我曾经阅读过的代码,贴在那里,它总是以那种形式出现,我不会修改它以使应用程序正确运行。只是应用程序启动并工作或启动但不工作。由于我中间什么都没改变,我真的不明白发生了什么。

0 投票
1 回答
1338 浏览

yaml-cpp - 如何在 yaml-cpp 中指定 Null 节点的输出格式?

我使用当前(2013/12/12)最新版本的 yaml-cpp。

我注意到两者YAML::Load("") 和都会YAML::Load("---\n...")导致 Null 节点,即YAML::Load("").Type() == YAML::NodeType::Null 当发送到std::ostream前者时输出一个空字符串,但后者输出波浪号(~)。

我希望两个节点都输出一个空字符串。我怎样才能实现它?

我想这样做是因为我注意到波浪号在我使用YAML::Load.

这是显示这种差异的代码。

0 投票
2 回答
1430 浏览

yaml - 如何使用 yaml-cpp 删除 YAML 文档的节点

我有一个 YAML 文件,例如:

现在我必须删除 top/names/name(john.doe)。如何使用 yaml-cpp 实现这一目标?我的代码是:

这似乎没有任何作用。