C++ Config 配置文件類


 

本文Config類的序列化和反序列化使用的jsoncpp, 因為jsoncpp提供的方法很簡單易閱讀。配置文件的格式自然也是json。

1 {
2    "image" : {
3       "savepath" : "D:\\Documents\\Pictures\\Wayixia"
4    }
5 }

google了一下"C++ Config", 這類的文章有不少,寫的很nice,但都是ini的,ini的層次和數據結構是有限的,例如,

1 [image]
2 files=1.jpg,2.jpg,3.jpg

當通過ini工具類讀取到files的內容時,不得不需要一個格式化內容的方法或者接口;當配置內容很多的時候,為了便於修改或者閱讀,不得不寫額外的代碼:

 1 [sectionname1]
 2 fieldname=...
 3 
 4 [sectionname2]
 5 fieldname=...
 6 
 7 [sectionname3]
 8 fieldname=...
 9 
10 ...

理想中的配置文件類的接口很簡單,自然生產的Josn文件也很簡單易讀

 1 Config config;
 2 // 讀取文件
 3 config.FromFile([filename]);
 4 
 5 // Get一個值
 6 // value 是一個類型,可以根據需要自動轉換,例如v.toInt(), v.toString()...
 7 value v = config.Get("sectionname.fieldname", [default_value]);
 8 
 9 // 轉換相應的類型
10 int a = v.toInt()
11 std::string s = v.toString();
12 ...
13 
14 // Set一個值
15 config.Set("sectionname.fieldname", [value]);
16 
17 // 保存到文件
18 config.ToFile([filename])

以下是封裝的一個Config類, 使用前需要配置好jsoncpp的包含頭文件和庫,點擊這里下載。 

自然,用json做配置的應用程序不在少數,有興趣的同學歡迎參與討論。發現錯誤及時通知修正,謝謝!

 [2013-07-08] 修正文件讀取bug 下載已經更新


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM