美文网首页
一个轻量级C++配置解析库

一个轻量级C++配置解析库

作者: 明明就_c565 | 来源:发表于2018-09-14 17:29 被阅读0次

    说明:

    本来想自己写日志文件解析,但随手一搜就搜到了(不得不说就是偷懒O(∩_∩)O哈哈哈~)

    本库作者github地址

    使用:

    下载:git clone https://github.com/Winnerhust/inifile2.git

    将头文件,cpp文件加入自己的项目中即可,无需做太多修改,可加入自己的日志。

    常用的API:

    /*打开并解析一个名为fname的INI文件*/

    intload(conststring &fname);

    /*将内容保存到当前文件*/

    intsave();

    /*将内容另存到一个名为fname的文件*/

    intsaveas(conststring &fname);

    /*获取section段第一个键为key的值,并返回其string型的值*/

    stringgetStringValue(conststring §ion,conststring &key,int&ret);

    /*获取section段第一个键为key的值,并返回其int型的值*/

    intgetIntValue(conststring §ion,conststring &key,int&ret);

    /*获取section段第一个键为key的值,并返回其double型的值*/

    doublegetDoubleValue(conststring §ion,conststring &key,int&ret);

    /*设置section段的注释*/

    intsetSectionComment(conststring §ion,conststring &comment);

    测试文件dial_cfg:

    [addr]

    ip =127.0.0.1

    #agent info

    [agent]

    port= 9294

    [dial]

    port = 9294

    #dial info

    [log]

    path=/var/log

    测试代码:

    #include "inifile.h"

    #include <iostream>

    int main()

    {

        int ret = 0;

        inifile::IniFile ini;

        ini.load("dial_cfg");

        string ip = ini.getStringValue("addr","ip",ret);

        cout<<"ip="<<ip<<",ret="<<ret<<endl;

        cout<<"dial_port="<<ini.getIntValue("dial","port",ret)<<endl;

        cout<<"ret="<<ret<<endl;

        cout<<"agent_port="<<ini.getIntValue("agent","port",ret)<<endl;

        cout<<"ret="<<ret<<endl;

        cout<<"log_path="<<ini.getStringValue("log","path",ret)<<endl;

        cout<<"ret="<<ret<<endl;

        ini.setValue("dial","port","22222","");

        ini.setValue("people","hww","18","xxx");

        cout<<"after change dial_port="<<ini.getIntValue("dial","port",ret)<<endl;

        cout<<"ret="<<ret<<endl;

        cout<<"after set people="<<ini.getIntValue("people","hww",ret)<<endl;

        ini.saveas("dial.ini");

        return 0;

    }

    运行后重新保存文件dial.ini:

    [addr]

    ip=127.0.0.1

    #agent info

    [agent]

    port=9294

    [dial]

    port=22222

    #dial info

    [log]

    path=/var/log

    [people]

    #xxx

    hww=18

    总结:

    支持解析ini文件

    支持修改、保存ini文件

    支持设置多个注释符,默认为“#”和';'

    支持参数名重复

    相关文章

      网友评论

          本文标题:一个轻量级C++配置解析库

          本文链接:https://www.haomeiwen.com/subject/nioogftx.html