2024-05-29【C/C++】libconfig 使用方法

鏈接到靜態(tài)庫(kù)

  • C
    頭文件使用 libconfig.h 鏈接config
  • C++
    Win: 頭文件使用libconfig.h++同時(shí)鏈接config++ config

config配置文件書寫規(guī)則

libconfig 配置文件中,不同的符號(hào) {}, [], 和 () 有不同的用法矛纹,它們分別表示不同的數(shù)據(jù)結(jié)構(gòu)和配置元素或南。

  1. 大括號(hào) {}

    • 大括號(hào)通常用于表示群組字典。在配置文件中采够,它們用于將一組相關(guān)的設(shè)置分組在一起蹬癌。
    • 群組是一系列設(shè)置的集合逝薪,可以包含任意數(shù)量的子設(shè)置蝴罪。
    • 例如,以下是一個(gè)使用大括號(hào)定義的群組示例:
      my_group = {
          setting1 = value1;
          setting2 = value2;
          // 更多設(shè)置...
      };
      
    • 在這里虏肾,my_group 是一個(gè)群組询微,包含了多個(gè)子設(shè)置撑毛。
  2. 方括號(hào) []

    • 方括號(hào)通常用于表示數(shù)組列表唧领。在配置文件中斩个,它們用于定義一系列相似的設(shè)置。
    • 數(shù)組是一組相同類型的值的序列做个,每個(gè)元素都可以通過索引訪問居暖。
    • 例如,以下是一個(gè)使用方括號(hào)定義的數(shù)組示例:
      my_array = [value1, value2, value3];
      
    • 在這里太闺,my_array 是一個(gè)包含多個(gè)值的數(shù)組省骂。
  3. 圓括號(hào) ()

    • 圓括號(hào)通常用于表示列表最住。在配置文件中涨缚,它們用于定義一組不同類型的值仗岖。
    • 列表是一系列不同類型的值的序列,每個(gè)元素可以是標(biāo)量值揽祥、數(shù)組檩电、群組或其他列表府树。
    • 例如奄侠,以下是一個(gè)使用圓括號(hào)定義的列表示例:
      my_list = (value1, [1, 2, 3], {name = "John"});
      
    • 在這里垄潮,my_list 是一個(gè)包含不同類型元素的列表闷盔。

總結(jié):

  • {} 用于群組或字典弯洗,[] 用于數(shù)組,而 () 用于列表逢勾。

如何讀取數(shù)組元素牡整,以my_array = [value1, value2, value3];為例

#include <iostream>
#include <libconfig.h++>

using namespace std;
using namespace libconfig;

int main()
{
    Config cfg;
    cfg.readFile("example.cfg");

    // 獲取根設(shè)置
    const Setting& root = cfg.getRoot();

    // 獲取數(shù)組
    const Setting &myArray = root["my_array"];
    int length = myArray.getLength();

    cout << "Array elements: ";
    for(int i = 0; i < length; ++i)
    {
        // 獲取數(shù)組中的整數(shù)值
        int value = myArray[i];
        cout << value << " ";
    }
    cout << endl;

    return 0;
}

如何讀取列表元素 以my_list = (value1, [1, 2, 3], {name = "John"});為例

#include <iostream>
#include <libconfig.h++>

using namespace std;
using namespace libconfig;

int main()
{
    Config cfg;
    cfg.readFile("example.cfg");

    // 獲取根設(shè)置
    const Setting& root = cfg.getRoot();

    // 獲取列表
    const Setting &myList = root["my_list"];
    int length = myList.getLength();

    // 遍歷列表
    for(int i = 0; i < length; ++i)
    {
        const Setting &element = myList[i];

        // 檢查元素類型
        if(element.getType() == Setting::TypeInt)
        {
            int intValue;
            element.lookupValue("value", intValue);
            cout << "Integer: " << intValue << endl;
        }
        else if(element.getType() == Setting::TypeGroup)
        {
            string nameValue;
            element.lookupValue("name", nameValue);
            cout << "Name: " << nameValue << endl;
        }
        else if(element.getType() == Setting::TypeArray)
        {
            int arrayLength = element.getLength();
            cout << "Array: ";
            for(int j = 0; j < arrayLength; ++j)
            {
                int arrayValue;
                element.lookupValue("value", arrayValue);
                cout << arrayValue << " ";
            }
            cout << endl;
        }
        else if(element.getType() == Setting::TypeString)
        {
            string stringValue = element;
            cout << "String: " << stringValue << endl;
        }
        // 其他類型...
    }

    return 0;
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市溺拱,隨后出現(xiàn)的幾起案子逃贝,更是在濱河造成了極大的恐慌,老刑警劉巖迫摔,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沐扳,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡攒菠,警方通過查閱死者的電腦和手機(jī)迫皱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門戏阅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人离赫,你說我怎么就攤上這事∨趾玻” “怎么了萨咳?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵靶壮,是天一觀的道長(zhǎng)碎绎。 經(jīng)常有香客問我,道長(zhǎng)日麸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任极景,我火速辦了婚禮盼樟,結(jié)果婚禮上裹赴,老公的妹妹穿的比我還像新娘延都。我一直安慰自己晰房,他們只是感情好殊者,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布共屈。 她就那樣靜靜地躺著,像睡著了一般矾削。 火紅的嫁衣襯著肌膚如雪挡逼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天苏携,我揣著相機(jī)與錄音著拭,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绩衷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼聪蘸,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼么介!你這毒婦竟也來了设拟?” 一聲冷哼從身側(cè)響起跑慕,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤绵脯,失蹤者是張志新(化名)和其女友劉穎悴侵,沒想到半個(gè)月后浇借,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闯估,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侠姑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罗捎。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霞掺,死狀恐怖挤巡,靈堂內(nèi)的尸體忽然破棺而出母廷,到底是詐尸還是另有隱情业舍,我是刑警寧澤下面,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布叉庐,位于F島的核電站枉阵,受9級(jí)特大地震影響拙徽,放射性物質(zhì)發(fā)生泄漏来破。R本人自食惡果不足惜送朱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鹉戚。 院中可真熱鬧,春花似錦、人聲如沸幸冻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)崖疤。三九已至劫哼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炸枣。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留适肠,地道東北人霍衫。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像迂猴,于是被迫代替她去往敵國(guó)和親慕淡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容