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

2018-09-14  本文已影响0人  明明就_c565

说明:

本来想自己写日志文件解析,但随手一搜就搜到了(不得不说就是偷懒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文件

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

支持参数名重复

上一篇 下一篇

猜你喜欢

热点阅读