问题标签 [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 - 如何对齐地图条目
我想知道是否有办法对齐地图线以使冒号垂直显示?
我已经尝试过 SetIndent() 和 SetLocalIndent(),但现在效果可见。
谢谢
yaml-cpp - 如何使用 yaml-cpp 发出复杂的数据结构?
这个问题主要针对 yaml-cpp (Jesse Beder) 的作者,他要求在此处发布有关 yaml-cpp 使用的问题。
在许多位置,包括 yaml-cpp 文档, http://code.google.com/p/yaml-cpp/wiki/HowToEmitYAML#Using_Existing_Nodes
您提到 yaml-cpp 不提供修改内存中现有 YAML::Node 对象的方法,您对修改内存中 YAML 的建议是:
使用我自己的数据结构将 YAML 存储在内存中,然后在序列化时以某种方式将其反馈给 yaml-cpp(这本质上归结为重新实现 YAML::Node 中的多态性,并且与重新实现大部分 yaml 没有太大区别- cpp), 或
“目前最好的方法是使用发射器并从节点的子节点中挑选”,即文档中给出的示例。这种方法的问题在于它只适用于最简单的情况。假设我想向一系列地图添加一个元素,其中地图的一个元素本身就是一个列表?这会很快变得任意复杂!找到插入新数据的位置,发出操纵器,这一切都必须“手动”完成。
更复杂的是,Emitter 是一个格式化程序,它的唯一输出是一个字符串,所以我唯一的选择是使用我的修改发出整个 YAML 文档,然后重新将其重新解析为新的内存表示。如果我对文档进行许多更改,此操作的效率足迹会迅速增加。
我知道修改现有节点存在实施挑战(您如何处理对节点数据或子节点数据的现有引用?)。但是,在我看来,允许动态创建新的、独立的节点并将其插入内存树中至少应该是简单的。例如,JsonCpp 是如何实现的:http: //jsoncpp.sourceforge.net
如果效率低下,这至少会使您记录的“发射器”方法成为一种潜在可行的解决方法。
我会很感激你对这些问题的看法。不幸的是,这些限制非常严重,并且鉴于 yaml-cpp 是唯一的 C++/OO YAML 库,我想知道除了切换到 JSON 之外是否还有其他实用的替代方案。
非常感谢您的想法!
yaml-cpp - 如何重载运算符>> for bool
我想将标量解析为布尔值。这个例子有效:
但在更复杂的情况下使用模板运算符:
如果字符串不是“是”或“否”,我会得到“YAML::InvalidScalar”。
c++ - yaml-cpp、YAML::Node 和模板运算符 >>
我正在使用yaml-cpp进行某种序列化。为此,每个类都必须使用签名声明一个方法:
T
保存和加载时这是一个不同的类。这两个类的接口是一样的,但是我不能做一个抽象基类,因为大多数方法都是模板。这部分工作正常。我试图将它与YAML::Node
'soperator>>
和YAML::Emitter
's连接起来operator<<
。
因为operator<<
,我有一个可行的解决方案,尽管非常残酷。首先为所有可序列化的类声明一个超类:
然后我可以使用以下内容operator<<
:
到目前为止,这很有效,尽管这reinterpret_cast
看起来很可怕,而且我不确定它是否合法。我已经尝试过相同的方法operator>>
,但没有奏效。它看起来像这样:
但是 gcc (4.6.2) 和 clang(2.9) 都忽略它,并使用operator>>
nodeimp.h 中定义的(yaml-cpp 的一部分):
所以我的问题是:我应该如何解决这个问题?我绝对想要的是只有一个方法用于序列化和反序列化,并且能够使用 >> 和 <<,就像它是 yaml-cpp 支持的普通类型一样。
parsing - 在 yaml-cpp 中解析注释
作为一个更大项目的一部分,我在 C++(和 Qt)中创建了一个图形化的 yaml 文件编辑器。我使用 yaml-cpp 库,一切正常。是否也可以解析评论?写评论没问题,但我没有找到阅读它们的解决方案。
在此先感谢,菲利普
c++ - 在 C++ 和 Perl 之间使用 YAML
我正在尝试YAML::Tiny
使用 C++ 解析 Perl 的 YAML 文件输出。作为 C++ 和 YAML 新手,我使用HowToParseADocument作为起点。
该monsters.yaml
文件(如果使用 创建YAML::Tiny
)如下所示:
我正在寻求帮助将HowToParseADocument中的示例变形以读取修改后的 YAML 文件,---
并将其作为每个条目的分隔符。我重新复制了下面的 C++ 主代码。
yaml-cpp - 带有 VC++ 2010 的 YAML 将编译为 Release,但不会编译为 Debug
我正在尝试使用 C++ 学习 YAML,我使用 CMake 使用 VC++ Express 2010 将给定的 yaml-cpp 文件转换为 .dll 和 .lib 文件。我设置项目的方式与设置 SFML 等其他库的方式相同。
我的问题是,当我尝试构建 yaml-cpp 站点上给出的示例代码的发布版本时,我得到:
但是,当我尝试构建调试版本时,我得到:
我不知道如何处理这个。我需要构建库的调试版本吗?如果是,如何?如果我设法改变某些东西,我不知道哪些项目选项会影响这一点。
当我编译时,我得到一个警告:
有很多模板打印输出,fe:
这是我这边的问题吗?错误的 CMake 文件和编译?
c++ - yaml-cpp 中带有 YAML 怪物示例的“非法块条目”
我正在运行此处找到的示例,以尝试在 C++ 中使用 YAML。我将代码逐字复制到新项目文件夹中的 test.cpp 中。我将 YAML 编译成一个静态库并将其链接到我的项目。我正在运行 Ubuntu 11.10。我使用以下命令进行编译:
我收到以下错误声明:
这个异常是什么意思?还有什么可能是错的?我找不到每个例外可能意味着什么的清晰文档,因此即使是指向此信息的链接也会有所帮助。我可能超出了我的深度,因为我是 YAML 的新手,使用库和 linux。在此先感谢您的帮助。
编辑:错误发生在“parser.GetNextDocument(doc)”之前。另外,我从存储单个标量的网站上运行了一个更简单的示例,并且效果很好。我的输入文件或我的代码是例外吗?
c++ - 与 yaml-cpp 交互的数据结构的设计技巧?
我开始使用 YAML 和 yaml-cpp 库来解释我的文件。我用我自己项目中的一些信息扩展了“怪物”示例。代码和 yaml 文件在下面,但首先是我的问题:
是否有必要将我将从项目中获得的所有数据放入一个庞大的结构中?在怪物示例中,从文档 doc[i] 中读取值很容易,因为它是怪物列表。在我的示例中,我将有一些列表,还有标量等。我发现这样做的唯一方法是制作一个从技术上讲只有一个条目的列表(即,顶部有一个“-”文件,并且所有内容都缩进到一个块中)。我认为答案是采用重载 >> 运算符的“问题表述”版本的一些内容,但是如果没有该函数中的内容,我无法使其正常工作。任何帮助或建议表示赞赏。
ea_test.cpp:
而且,ea.yaml:
提前感谢您的帮助和提示!
Edit: I will probably only be running one yaml document, and there's only one problemformulation object that will ever be created. My code adapts what you'd do for a list, but only does it once. I would like to know the proper way to, "just do it once", since I think that would be cleaner and make a better looking YAML file (without all the things indented one block for no reason).
yaml-cpp - Visual Studio下的yaml c++ dll
我正在尝试在 Visual Studio 8 2005 下使用“yaml-cpp-0.3.0”创建 dll,并出现“安装”、“运行测试”的链接错误
错误 1 错误 LNK2019: 无法解析的外部符号 "void __cdecl YAML::operator>>(class YAML::Node const &,class YAML::Binary &)" (??5YAML@@YAXABVNode@0@AAVBinary@0@@Z ) 在函数“public: class YAML::Binary const __thiscall YAML::Node::to(void)const”中引用 (??$to@VBinary@YAML@@@Node@YAML@@QBE?BVBinary@1@XZ ) 解析器测试.obj
错误 2 致命错误 LNK1120: 1 unresolved externals ....\yaml-cpp_dll\build\test\Debug\run-tests.exe 1
使用用户在http://code.google.com/p/yaml-cpp/issues/detail?id=88上提到的一般步骤
- cd yaml-cpp for 'yaml-cpp-0.3.0'
- mkdir 构建
- 光盘构建
- cmake -DBUILD_SHARED_LIBS=ON -G "Visual Studio 8 2005" ..
寻求帮助如何解决这个问题。任何输入表示赞赏。