2014-04-16 41 views
6

我在yaml-cpp上很新,我試過最簡單的程序但失敗了,也沒找到作者的google/github網站的答案。從YAML官方網站如何通過yaml-cpp加載YAML文件?

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

using namespace std; 

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

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.9c++11IDE:QtCreator3.0.1yaml-cpp 0.5.1


[解決]
我這樣做,我裝的sample.yaml錯路愚蠢的錯誤。

回答

2

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

+0

謝謝@Jesse。我的愚蠢的錯誤,sample.yaml路徑問題。 – user001

6

我認爲你使用的yaml-cpp版本中的YAML解析器只是不夠先進,無法處理示例文件的第一行。示例文件試圖說明一些更先進的YAML功能。看起來你的解析器不能處理它們。我建議你從一個簡單的例子文件開始。

我有三個在線校驗檢查您的文件,結果如下:

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

+0

感謝您的解釋。 'yaml-cpp' 0.5.1支持Yaml1.2,所以我認爲它可以理解'sample.yaml'。我會稍後使用1.0語法嘗試一些yaml文件。 – user001

+0

也投票,謝謝你提供有用的信息。 – user001