zoukankan      html  css  js  c++  java
  • C++ Config 配置文件类

    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 下载已经更新

    让自己放松一下, 不要再做重复的事情和用生命去写代码。
     
    分类: 编码
    标签: C++ Config
  • 相关阅读:
    【建站经验】 一个成熟的大型网站系统架构演化之路
    Puppet 安装配置
    SHELL二十篇(读书笔记)
    LINUX常见小问题汇总
    shell eval命令使用
    javaweb三大框架SSH
    Java Web(八) MVC和三层架构
    在CMD中操作mysql数据库出现中文乱码解决方案
    编码与解码
    JSONP
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3179433.html
Copyright © 2011-2022 走看看