问题标签 [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 投票
2 回答
2694 浏览

c++ - C++ 中的 Yaml 发射器

是否有用于发出 YAML 的 C++ 库?Wikipedia 提到了 libyaml 的 c++ 包装器,但链接已损坏。官方 YAML 站点仅提供yaml-cpp,这也在这个SO question 中提出,但 cpp-yaml 只是一个解析器,而不是一个发射器。我运气不好?

编辑:我正在寻找面向对象的接口,因此需要 C++。我知道我可以在 C++ 代码中使用 libyaml 的 C 接口,但这并不理想。

0 投票
2 回答
1405 浏览

c++ - 在 OS X 上使用 yaml-cpp 的问题

所以我在编译使用 yaml-cpp 的应用程序时遇到了问题

我在源文件中包含“yaml.h”(就像 yaml-cpp wiki 中的示例一样),但是当我尝试编译应用程序时,我收到以下错误:

我的makefile看起来像这样:

pkg-config --cflags --libs yaml-cpp返回:

并且 yaml.h 确实位于 /usr/local/include/yaml-cpp

知道我能做什么吗?

谢谢

0 投票
1 回答
288 浏览

c++ - RAD Studio 2010 中的错误 yaml-cpp 编译

我无法yaml-cpp在 RAD Studio 2010 中编译。我有错误nodeutil.h

编译器打印:

[BCC32 Error] nodeutil.h(30): E2238 Multiple declaration for 'is_index_type_with_check<unsigned int,0>'

[BCC32 Error] nodeutil.h(24): E2344 Earlier declaration of 'is_index_type_with_check<unsigned int,0>'

我认为这一切都是正确的 - 在第 24 行我得到了

is_index_type_with_check<std::size_t, false>,

在第 30 行我得到了

is_index_type_with_check<unsigned, true>.

两种不同的类型。

但是如果我像下面这样更改第 24 行,RAD Studio 可以编译yaml-cpp

为什么?!在第 24 行我得到了

is_index_type_with_check<std::size_t, true>

在第 30 行

is_index_type_with_check<unsigned, true>

两个相同的类型。但所有这些都可以在 RAD Studio 中使用,而不能在 MS VS 2008 Express 中使用。

0 投票
1 回答
1432 浏览

c++ - 无效的标量十六进制值 0x8000000 及以上

我发现从 yaml 文件中获取十六进制值的问题。它无法获得 0x80000000 及以上的十六进制值。以下是一个示例 C++ 程序。

hex.yaml

错误信息在这里。

环境

yaml-cpp : 从 svn, March.22.2010 或 v0.2.5 获取

操作系统:Ubuntu 9.10 i386

我现在需要在 yaml-cpp 上获取十六进制值,但我不知道。请告诉我如何以另一种方式获得它。

谢谢,

0 投票
1 回答
3029 浏览

yaml-cpp - 尝试使用 yaml-cpp 解析 OpenCV YAML 输出

我有一系列 OpenCv 生成的 YAML 文件,想用 yaml-cpp 解析它们

我在简单的东西上做得很好,但矩阵表示很困难。

这应该映射到向量中

类型为float。我的代码如下所示:

但我明白了

我搜索了一些有关 yaml-cpp 的文档,但似乎没有任何文档,除了一个关于解析和发射的简短介绍性示例。不幸的是,在这种特殊情况下,这两者都没有帮助。

据我了解,!!表明这是一个用户定义的类型,但我没有看到 yaml-cpp 如何解析它。

0 投票
2 回答
2713 浏览

c++ - yaml-cpp 解析字符串

是否可以使用 yaml-cpp 解析 YAML 格式的字符串?

没有YAML::Parser::Parser(std::string&)构造函数。(我通过 libcurl 从 http-server 获取 YAML 字符串。)

0 投票
5 回答
571 浏览

c++ - 重载流插入而不违反信息隐藏?

我正在为一个项目使用yaml-cpp。我想为某些类重载<<and>>运算符,但我在努力解决如何“正确”执行此操作时遇到问题。以Note课堂为例。这很无聊:

操作者<<是易酱。在.h

并且在.cpp

没有汗水。然后我去声明>>运营商。在.h

但在.cpp我得到:

如果我写这样的东西,node[0] >> v._number;我将需要更改 CV 限定符以使所有Note领域public(这打败了我(教授、书籍和经验)教给我的所有内容))关于数据隐藏。

我觉得node[0] >> temp0; v.number( temp0 );到处都做不仅乏味、容易出错和丑陋,而且相当浪费(额外的副本怎么办)。

然后我变得聪明了:我试图将这两个运算符移动到Note类本身中,并将它们声明为friends,但是编译器(GCC 4.4)不喜欢这样:

src/note.h:44: error: 'YAML::Emitter& Note::operator<<(YAML::Emitter&, const Note&)' 必须只取一个参数
src/note.h:45: error: 'void Note: :operator>>(const YAML::Node&, Note&)' 必须只有一个参数

问题:如何“正确”重载>>类的运算符

  1. 在不违反信息隐藏原则的情况下?
  2. 无需过度复制?
0 投票
1 回答
292 浏览

c++ - 在 yaml-cpp 中修改内存中的文档

我想读取一个 YML 文档,通过修改内存中的一些节点来过滤它,然后用发射器将它吐出来。问题是 YAML::Node 似乎被设计为只读的。有没有办法替换我缺少的节点值(在这种情况下为标量)?

0 投票
2 回答
1688 浏览

c++ - 来自 yaml-cpp 的编译器错误

我正在尝试将 yaml-cpp 集成到一个项目中,但是我从 GCC 中看到了一些意外错误。例如:

另一个例子:

我的平台是 Fedora(2.6.32 内核)、GCC 4.4.1 和 yaml-cpp 0.2.5。还有很多很多其他的错误。肉眼看来,这似乎是 yaml-cpp 中的一个问题,但经验告诉我,我可能是错误的人。有任何想法吗?

更新

文件 traits.h 包含以下内容:

nodeutil.h 包含:

0 投票
2 回答
1266 浏览

yaml-cpp - 无法读取嵌套映射(引发 YAML::InvalidScalar)

我有一个类(包含一些标量值和一个浮点向量),我想读取和写入一个实例作为另一个映射的值。

编写这门课效果很好,但无论我做什么,我似乎都无法阅读它。它不断抛出一个 InvalidScalar。

这就是输出(用 yaml-cpp 编写而没有报告任何错误)看起来像:

文档似乎说这是支持的用法,嵌套映射,在这种情况下,序列作为值之一。它抱怨它是一个 InvalidScalar,尽管我做的第一件事告诉它这是一张地图:

有没有人看到这个问题?