C++ Config 配置文件類

 

本文Config類的序列化和反序列化使用的jsoncpp, 由於jsoncpp提供的方法很簡單易閱讀。配置文件的格式天然也是json。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文件也很簡單易讀google

 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的包含頭文件和庫,點擊這裏下載。 spa

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

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

相關文章
相關標籤/搜索