如何通过yaml-cpp加载YAML文件?

时间:2014-04-16 11:30:08

标签: c++ yaml-cpp

我是yaml-cpp的新手,我尝试了最简单的程序,但失败了,也没有找到作者google / github网站的答案。

#include <iostream>
#include "yaml-cpp/yaml.h"

using namespace std;

int main()
{
    YAML::Node config = YAML::LoadFile("sample.yaml");
    return 0;
}
来自YAML官方网站的

sample.yaml样本

--- !clarkevans.com/^invoice
invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments: >
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.

错误消息如下:

  

libc ++ abi.dylib:以类型YAML :: BadFile的未捕获异常终止:yaml-cpp:第0行错误,第0列:错误文件

我可以知道问题是什么吗?它是库构建问题还是YAML语法问题或API使用问题?

开发环境

MacOSX10.9 c++11 IDE:QtCreator3.0.1 yaml-cpp 0.5.1


[解决]
我犯了一个愚蠢的错误,我加载了错误的sample.yaml路径。

3 个答案:

答案 0 :(得分:7)

我认为您使用的yaml-cpp版本中的YAML解析器不够先进,无法处理示例文件的第一行。示例文件试图说明一些更高级的YAML功能。您的解析器似乎无法处理它们。我建议你从一个更简单的示例文件开始。

我使用三个在线验证器检查了您的文件,结果如下:

毫无疑问,该文件是有效的YAML,但这并不意味着所有现存的解析器都可以解析它!

答案 1 :(得分:2)

看来yaml-cpp无法找到您的文件。你能加载任何文件吗?确保该文件位于程序的工作目录中,为了理智,请确保您可以先加载一个非常简单的文件。

答案 2 :(得分:0)

根据给定的路径,您的yaml文件必须位于您的最终状态。