问题标签 [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.
yaml-cpp - 无需在 YAML-cpp 中迭代即可获取密钥
有没有一种简单的方法可以在不迭代的情况下使用 YAML-cpp 获取地图中的密钥?我在说明中看到我可以使用first()
YAML-cpp 迭代器类的方法,但我不需要实际迭代。我有一个可以通过缩进级别识别的键,但是如果该键不是已知列表之一,我现在需要做的是抛出异常。我的代码目前如下所示:
看,我需要密钥字符串才能继续解析,因为 otherThing 在 YAML 文件中的 goodKey 下。这很好用,但我想告诉用户无法识别的密钥是什么。不过,我不知道如何访问它。我在头文件中看不到任何赋予我该值的函数。我如何得到它?
yaml-cpp - 尝试构建库时出现 yaml-cpp 编译器错误
我正在尝试使用 Visual Studio Express 2012(使用 Cmake 生成的项目文件)编译yaml-cpp 0.5,但我从 impl.h 中收到了一些错误:
所有错误都来自模板函数node_data::equals
和node_data::convert_to_node
请注意,这些错误来自run-tests
项目文件;我实际上能够构建 lib 文件,但不能使用该库,因为它需要这些功能才能工作。
有任何想法吗?
编辑:使用 VS 2010 编译时,我也会遇到同样的错误。
yaml-cpp - 如何为特定的 yaml-cpp 节点设置发射样式
我正在发出一个 YAML 文档,如下所示:
在节点层次结构的某个地方,我有一个特定的序列,我想在Flow
样式中发出,而其他一切都应该使用默认样式设置。
除了手动发射每个节点并注意我感兴趣的节点之外,我似乎找不到任何方法。这似乎是为相对简单的事情付出高昂的代价。
理想情况下,我希望能够标记Node
“如果你被发射,请使用以下样式”。但我认为没有任何支持。
谁能想到不得不手动发出整个文档的方法?
非常感谢。
compilation - http://code.google.com/p/yaml-cpp/wiki/HowToParseADocument 上的完整示例 Yaml 程序无法编译
在 Linux 库上使用 G++ 4.6.2 是根据说明构建的。测试目录中的 run_tests 工作正常。
setenv YAML_HOME /nfs/site/proj/dt/ltt_test_15/work_area/ironchef/new_version/ironchef/trunk/yaml/yaml-cpp-0.5.0
ls $YAML_HOME 总计 640 16 CMakeCache.txt 0 build/ 0 libyaml-cpp.so.0.5@ 8 test/ 8 CMakeFiles/ 8 cmake_install.cmake 480 libyaml-cpp.so.0.5.0* 8 util/ 16 CMakeLists.txt 0 include/ 8 license.txt 8 yaml-cpp.pc 8 CTestTestfile.cmake 8 install.txt 8 matt_sandbox/ 8 yaml-cpp.pc.cmake 40 Makefile 0 libyaml-cpp.so@ 8 src/
cd matt_sandbox g++ -o test_yaml -g -I/usr/intel/pkgs/boost/1.48.0-gcc-4.6.2/include -I$YAML_HOME/include -I$YAML_HOME/include/yaml-cpp -I$YAML_HOME /include/yaml-cpp/node -I$YAML_HOME/include/yaml-cpp/node/detail -I$YAML_HOME/include/yaml-cpp/contrib main.cpp
编译器错误:main.cpp:在函数 `void operator>>(const YAML::Node&, Vec3&)' 中:main.cpp:25:错误:'YAML::Node::operator 中的 'operator>>' 不匹配[](const Key&) const [with ... 类似错误 .... main.cpp:51: error: 'class YAML::Parser' has no member named 'GetNextDocument'
从http://code.google.com/p/yaml-cpp/wiki/HowToParseADocument上的完整示例复制并粘贴代码
yaml-cpp - 如何使用复杂的密钥访问 yaml
文件 test.yaml .....
我可以使用什么命令通过 yaml-cpp 访问其中之一。我可以访问整个地图,但不能访问单个元素。
这是我正在尝试的:
这是我的结果:
如果这在 yaml-cpp 中还不可能,我也想知道。
c++ - 为什么要插入一个?(问号)就在地图条目之前?
Yaml-cpp 似乎在我的地图条目之前插入了一个问号。这是结果:
如您所见,从超子开始,有一个问号。我尝试添加更多条目以查看会发生什么。它似乎在?
和之间交替:
。这很奇怪。
我尝试删除核子键和超子键的所有内容,我仍然得到这个
嗯。确实很奇怪。这是我的代码。原谅凌乱
在旁注中,我正在缩进以减少混乱。所以也原谅。
另外,我的 YAML 结构好吗?还是我应该修改一些不同的东西?谢谢。
yaml-cpp - 为新的 yaml-cpp API 定义自定义输入类型
我正在尝试使用新型 YamlCpp API 定义一些自定义输入类型。我有两个问题。首先让我说,我们目前使用的是 0.3 style-api,一切都很好。新 API 的代码外观提高了大约 10 倍,因此我们希望使用它。
- 为什么我当前的方法会使编译器失效?
- yaml-cpp 是否足够智能以处理嵌套模板。例如,如果我的解析器知道如何 enc/dec std::vectors,然后我为 MyAwesomeType 单独定义一个自定义处理程序——我可以要求它 enc/dec a
std::vector<MyAwesomeType>
并且它会弄清楚吗?
我的代码首先复制并粘贴网站上的示例(此处),然后对其进行修改。我当前的实现尝试处理std::vector<std::pair<qint16,qint16>>
- 这不会编译的转换。(仅供参考 - qint16 只是 __int16 的跨平台 typedef)
最后,我想再用这个来调用
...基于看起来像这样的输入 yaml...
这里的编译器错误输出大约是 300 行,所以我不会在这里发布。平台:Visual Studio 2010 SP1 x64
谢谢你的帮助。
编辑:
这是我得到的许多错误中的第一个,即用新样式解析 Node 键似乎并不开心......我添加这个是因为导致这可能与其他错误有关。
代码
原因
请注意,上面错误中提到的第 75 行是
我使用默认分支的 Rev 573 从最新源代码重新编译的行,所有这些示例都来自该代码。
c++ - 如何使用 yaml-cpp 0.5.0 API 从列表中删除元素
以下测试代码不会按预期从列表中删除元素:
测试输出文件包含:
该文件似乎包含原始列表中的值,并且该元素未被删除。从列表中删除元素的正确方法是什么?
c++ - 通过引用遍历节点的惯用方式
从一个字符串开始,该字符串表示我要从中检索数据的节点的路径,例如“abc”。目前,我用来横穿节点层次结构以到达该节点的代码看起来像这样(可能无法编译,但你明白了):
上面的代码似乎可以正常工作,但我想知道是否有更好的方法来进行节点横向分配。使用直接节点分配 ( currNode = currNode[key]
),而不是 () 的指针/地址currNode = &((*currNode)[key])
,似乎最终会在节点之间创建引用,而不是从一个节点遍历到下一个节点。
是否有“更清洁”或更惯用的方法来实现这一目标?
yaml-cpp - 如何设置 yaml-cpp 节点样式?
我有一个vector3类。
结果是
我希望结果是:
如果使用旧的 API,我可以YAML::Flow
用来设置样式:
使用新的 API,如何设置样式?
我在 yaml-cpp 项目问题页面上问了这个问题:
https://code.google.com/p/yaml-cpp/issues/detail?id=186
我得到了答案:
您仍然可以使用发射器并设置流样式:
但这vector3
是对象的一部分。我专门化YAML::convert<>
模板类
所以我需要返回一个节点,但发射器无法转换为节点。
我需要对象喜欢这样:
我怎样才能做到这一点?