本文使用 c++ 庫 yaml-cpp 對 yaml 檔案進行解析。
cd build
cmake ../
make
得到標頭檔案和.a檔案。將標頭檔案和.a檔案拷貝至工程目錄,在編譯時進行鏈結即可。
注:cmake須3.0以上。
# yaml測試樣例
# null 或 null 為關鍵字,不能寫
# 名稱
# 字串
name: conf file
# 版本
# 如按浮點,2.0會轉換成2
# 如按字串,保留原樣
version: 2.0
# 布林類,轉換為1或0
need: true
# 時間
time: 2020-10-03t09:21:13
empty: nul
# 物件
# 加雙引號會轉義\n,即會換行
my: name: late \n lee
name1: "late \n lee"
age: 99
# 塊text: |
hello
world!
# 陣列
fruit:
# 多級陣列
multi:
sta:
- 110 210 ddd 99
- 133 135 1 2 1588 1509
- 310-410
- 333-444
該示例基本涵蓋了大部分的 yaml 格式。包括:字串,數值、陣列、多級map。
測試**如下:
#include #include "yaml-cpp/yaml.h"
using namespace std;
int main(int argc,char** ar**)
catch (...)
// 獲取型別
for (yaml::const_iterator it = config.begin(); it != config.end(); ++it)
}// 頂層
cout << "version:" << config["version"].as() << endl;
cout << "version(str):" << config["version"].as() << endl;
cout << "need:" << config["need"].as() << endl; // 輸出值為1
cout << "time:" << config["time"].as() << endl;
cout << "empty:" << config["empty"].as() << endl;
try
// 單個取
for (auto item : config["fruit"])
} catch(...)
try
printf("\n");
} catch (...)
// 對於不存在的key,似乎只能用try
try catch (...)
cout << "text:" << config["text"].as() << endl;
// 有兩層
printf("name: %s \nname1: %s \nage: %d\n",
config["my"]["name"].as().c_str(),
config["my"]["name1"].as().c_str(),
config["my"]["age"].as());
return 0;
}
輸出結果如下:
./a.out
key: name scalar
key: version scalar
key: need scalar
key: time scalar
key: empty scalar
key: my map
key: text scalar
key: fruit sequence
key: multi map
version:2
version(str):2.0
need:1
time:2020-10-03t09:21:13
empty:nul
sizeof array: 6
new sta:
110 210 ddd 99
133 135 1 2 1588 1509
310-410
333-444
key bad not exist...
text:hello
world!
name: late \n lee
name1: late
lee
age: 99
1、name: "late \n lee"
輸出會換行。而name: late \n lee
則會原樣輸出。
2、引數的值不能為 null 或 null,但可以為nul。
3、如果欄位不存在或非法,會直接報段錯誤,因此需要用try catch
讀取。
yaml陣列解析 解析動態Yaml檔案
我有乙個yaml檔案,當前寫為 keys key secret dog values username shiba password inu key secret cat values dbhost localhost words meow 但是,此yaml檔案經常更改,因此每次可以使用不同的值新增...
python解析yaml檔案
yaml是乙個可讀性高,用來表達資料序列的格式。yaml引用了其他多種語言,包括 c語言 python perl,並從xml 電子郵件的資料格式中獲得靈感。目前已經有數種程式語言或指令碼語言支援 或者說解析 這種語言。yaml的語法和其他高階語言類似,並且可以簡單表達清單 雜湊表,標量等資料形態。它...
go解析yaml檔案示例
yaml檔案已經成為配置的一種主要格式,因此各種語言都提供了相應的解析類庫,本文就以go語言中常用的yaml解析庫 gopkg.in yaml為例,簡單展示一下如何解析yaml檔案 具體 在這裡 1,直接將yaml檔案內容解析為我們定義好的struct,這種簡單方便,想獲取對應值,可以直接獲取。2,...