[英]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.