簡體   English   中英

如何通過yaml-cpp加載YAML文件?

[英]How to load YAML file via 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路徑。

我認為您使用的yaml-cpp版本中的YAML解析器不夠先進,無法處理示例文件的第一行。 示例文件試圖說明一些更高級的YAML功能。 您的解析器似乎無法處理它們。 我建議你從一個更簡單的示例文件開始。

我使用三個在線驗證器檢查了您的文件,結果如下:

毫無疑問,該文件是有效的YAML,但這並不意味着所有現存的解析器都可以解析它!

看來yaml-cpp無法找到您的文件。 你能加載任何文件嗎? 確保該文件位於程序的工作目錄中,為了保持合理性,請確保首先加載一個非常簡單的文件。

根據您提供的路徑,您的yaml文件需要位於您的endstate所在的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM