【问题标题】:How to load YAML file via yaml-cpp?如何通过 yaml-cpp 加载 YAML 文件?
【发布时间】:2014-05-31 06:02:01
【问题描述】:

我对@9​​87654321@ 很陌生。我尝试了最简单的程序,但它失败了,并且我无法从 GitHub 存储库中找到答案。

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

using namespace std;

int main()
{
    YAML::Node config = YAML::LoadFile("sample.yaml");
    return 0;
}

sample.yaml 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: terminating with uncaught exception of type YAML::BadFile: yaml-cpp: error at line 0, column 0: bad file

是库构建问题还是 YAML 语法问题还是我的 API 使用问题?

我使用的是yaml-cpp 0.5.1 版。

【问题讨论】:

    标签: c++ yaml-cpp


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的解释。 yaml-cpp 0.5.1 支持 Yaml1.2,所以我想它可以理解 sample.yaml。稍后我会尝试一些 1.0 语法的 yaml 文件。
    • 也投赞成票,感谢您提供有用的信息。
    【解决方案2】:

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

    【讨论】:

    • 感谢@Jesse。我的愚蠢错误,sample.yaml 路径问题。
    【解决方案3】:

    根据您提供的路径,您的 yaml 文件需要位于最终状态所在的位置。

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 1970-01-01
      • 2022-01-01
      • 2022-10-04
      • 2018-10-13
      • 2019-05-16
      • 2019-06-23
      • 2016-01-08
      • 1970-01-01
      相关资源
      最近更新 更多