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 下载已经更新
原文链接: https://www.cnblogs.com/lovelylife/p/3177349.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/94959

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午2:53
下一篇 2023年2月10日 上午2:53

相关推荐