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

use*_*001 6 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;
}
Run Code Online (Sandbox Code Playgroud)

来自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.

Dav*_*nan 7

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

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

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


Jes*_*der 3

yaml-cpp 似乎找不到您的文件。您能够加载任何文件吗?确保该文件位于程序的工作目录中,并且为了理智起见,请确保您可以首先加载一个非常简单的文件。