一百五十二

2021-10-13 02:55:52 字數 2332 閱讀 6411

一直用c++操作ini做配置檔案,想換成yaml,在全球最大的同**友**github上搜尋,看有沒有開源的庫,功夫不負有心人,找到了yaml-cpp,試著解析了乙個yaml檔案,給個滿分。分享一下如何使用他。

先git clone [email protected]:jbeder/yaml-cpp.git下,進行build四件套,把他編譯成靜態庫

mkdir build

cd build

cmake …

make

執行完後,會得到libyaml-cpp.a。

新建乙個專案,結構大致如下

yaml_demo

|__ include

|yaml-cpp 頭資料夾

|lib

|yaml-cpp 庫資料夾

|main.cpp

把頭檔案和庫拷貝到相應的資料夾內。

配置cmakelists.txt把頭檔案和靜態庫加到專案裡,這樣在編譯和鏈結時才能通過

project(yaml_demo)

set(executable_output_path katex parse error: expected 'eof', got '#' at position 27: …nary_dir}/bin) #̲ 二進位制檔案的輸出目錄 lin…/lib/yaml-cpp)

add_executable(pro

ject

name

main

.cpp

)tar

geti

nclu

dedi

rect

orie

s(

main.cpp) target_include_directories(

projec

tn​a

mema

in.c

pp)t

arge

ti​n

clud

ed​i

rect

orie

s(public pro

ject

sour

cedi

r/in

clud

e)ta

rget

link

libr

arie

s(

/include) target_link_libraries(

projec

ts​o

urce

d​ir

/inc

lude

)tar

getl

​ink

l​ib

rari

es( yaml-cpp.a)

對yaml-cpp的配置就完成了。看一下我的config檔案

template

struct convert;

在進行轉換的時候他會判斷有沒有實現 decode方法

struct as_if

const node& node;

t operator()() const

};node是yaml-cpp的核心,我們的配置的所有操作都從這個類中進行。

我們只要具體化自定義的struct就可以使用了

static bool decode(const node &node, label &rhs) 

};

}

encode方法是把我們自定義的struct轉換成yaml-cpp的node,

轉換時可以這樣

struct container ;

namespace yaml

static bool decode(const node &node, container &rhs) 

};

}

完整**如下:

#include

#include

#include

#include

struct container ;

namespace yaml

static bool decode(const node &node, container &rhs) 

};

static bool decode(const node &node, label &rhs) 

};

int main(int argc, char **ar**)

if (config["containers"])

}return 0;

一百三十二

一 前言 在我的這個系列文章中,選擇 見識會始終貫穿整個所有文章,因為這個是我近十年職業生涯最深的感受,在正確的方向上努力,才能實現更大的價值。畢業是個殘忍的季節,成熟不成熟的都要一同收割,經過大學四年的學習,我們終於畢業了,就這樣懷揣者夢想再次出發了,腦海裡依舊閃現著老師的尊尊教導,你們畢業了,但...

春節十二響 十二省聯考2019

給定一顆樹,要求將其上的節點分成若干組,使得每一組的節點互相不擁有祖先 後代關係。定義每一組的值為該組節點權值最大值,求值總和最小值。硬上不是很顯然的貪心,但是資料中鏈的情況給了提示。考慮鏈的情況 對於根節點兩側的鏈,我們分別排序,然後覆蓋選取即可。這個貪心的正確性是顯然的。現在考慮完整的資料 對於...

十二省聯考2019 春節十二響

點這裡看題目。感覺自己好蠢 假如我們有兩棵樹 t 1,t 2 我們應該怎麼計算出它們合併之後的最優解呢?設最優情況下,t 1 的所有記憶體段的集合為 m 1 t 2 的集合為 m 2 我們可以知道,m 1,m 2 中所有的元素都是不能再合併的 廢話 考慮有 m 1,m 2 in m 1,m 1 m ...