在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > C/C++服務器開發(fā)的必備利器–libconfig

            C/C++服務器開發(fā)的必備利器–libconfig

            發(fā)布人:電子禪石 時間:2023-03-05 來源:工程師 發(fā)布文章
            C/C++服務器開發(fā)的必備利器–libconfig

            http://www.leoox.com/?p=311

             

            程序肯定需要一份配置文件,要不然,自己的程序不是“可配置”的,自己都不好意思往“高大上”靠攏。言歸正傳,以前自己寫代碼,配置文件的讀寫都是各式各樣的,有用過xml,有用過其他項目copy過來的??撮_源代碼的時候,也是各式各樣的,比如redis的,Nginx等等。有時候就在想,配置文件的解析還真是麻煩,要自己處理一堆的字符串,有空的時候自己整理一下Nginx的源碼,復用Nginx的配置代碼,加強自己的代碼庫。但最近才發(fā)現(xiàn),原來已經(jīng)有一個很優(yōu)秀的C/C++配置庫libconfig一直在等著我了。

               認識libconfig

             

            libconfig庫的官方網(wǎng)站在:http://www.hyperrealm.com/libconfig/

            確實是非常優(yōu)秀的C/C++配置庫,我們程序員完全可以從解析字符串的“苦力”中解脫出來。多復雜的配置項,都能滿足,來看看。

                   A configuration consists of a group of settings, which associate names with values. A value can be one of the following:

            • A scalar value: integer, 64-bit integer, floating-point number, boolean, or string

            • An array, which is a sequence of scalar values, all of which must have the same type

            • A group, which is a collection of settings

            • A list, which is a sequence of values of any type, including other lists

             

            簡單直譯一下:

            一個配置項,可以理解為我們最常見的key-value的形式。key就是你的配置的名字了。那優(yōu)秀就優(yōu)秀在value上了。value支持的類型有:

            1、常見的數(shù)據(jù)類型:

            整數(shù)(int):可以用10進制和16進制表示。0x打頭的數(shù)字libconfig會自動解析為16進制的數(shù)字。

            64位整數(shù)(int64_t):在數(shù)字的后面加上L即可。

            浮點數(shù)(float):個人不太喜歡用這個類型。

            布爾數(shù)(bool):true或者false。不區(qū)分大小寫。

            字符串(string):這個字符串非常強大。

            a、支持轉義字符\\’, ‘\f’, ‘\n’, ‘\r’,‘\x’ and ‘\t’。

            b、相鄰的字符串libconfig會自動拼接。這樣太常的內(nèi)容,我們可以多行來寫,可讀性非常好。比如:

            example = “hello world”;  等價于

            example = “hello”

            ” world”;

            【注意】

                   我們可以使用’=’,也可以使用’:’來作為賦值號。既然是C/C++程序員,還是使用’=’號看得舒服一些。

            和C/C++的注釋一樣,/**/就是跨行的注釋。 //就是單行注釋。當然還支持腳本語言的注釋符號#,#也是單行注釋。但是特殊的是,如果注釋符在雙引號中使用,那就不再是注釋符了,libconfig會解析為正常的明文。

            2、數(shù)組結構。和平常我們使用的數(shù)組是一樣一樣的,數(shù)組的各個元素都必須是相同的數(shù)據(jù)類型。

            3、群組結構。這個可以理解為一個容器。這個容器里面,我們可以放置很多個配置項。當然這些配置項的value也可以繼續(xù)是群組。

            4、列表結構。這個列表和我們C++常用的STL里的list結構可不太一樣。這個列表結構里面的元素不要求具備相同的數(shù)據(jù)類型,元素1是int,元素2可以是string,元素3可以是數(shù)組,元素4可以是一個群組,元素5可以是另一個列表。

             

            可以說,正是因為value的多姿多彩,才給了我們程序員無限的發(fā)揮空間。通過群組結構和列表結構,我們可以很方便靈活的進行各種變態(tài)的配置讀取。除了讀取配置,可不要忘記了libconfig還有兩只手的哦:必要的時候,我們可以把內(nèi)存里面的一些值,通過libconfig生成一份標準的配置文件。

             

               體驗libconfig

            動手用libconfig進行一個hello world的配置吧!把value支持的所有數(shù)據(jù)類型都用上,加深理解。

             

            值得說明的是,libconfig是通過路徑來讀取某一個配置的。比如log.log_path這個路徑對應的是log_path這個配置項,

            server.[0].addr這個路徑對應的是業(yè)務服務器列表的第一個元素里面的addr這個配置項。

             

              libconfig的代碼樣例

            不寫一段hello world的代碼,是算不上真正接觸了libconfig的。libconfig提供了C和C++的API。先用C++來爽一下吧。

            首先就是要下載安裝libconfig的庫。這個很簡單,到官網(wǎng)下載,然后./configure & make & make install就可以了。

             

            編譯和運行一下:

             


            *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



            關鍵詞: libconfig

            技術專區(qū)

            關閉