conf 配置文件解析库 myconf

GPL
C/C++
跨平台
2013-12-16
jungleliu0923

myconf是一个可以方便读取key-value配置的C/C++库。
1 规则如下 
1)、配置为 key : value 格式 
2)、可以支持读取int(正负数), unsigend int, char *, 支持默认缺省值。
3)、string如果有特殊字符(如空格等)需要加上""(如"你 好");
4)、使用完必须调用关闭日志文件句柄,否则有内存泄漏。
5)、需要使用mylog编译依赖, 编译主要修改Makefile置顶工作目录WORKROOT,然后通过makefile.env指定MYLOG、MYCONF的路径

2 API
1) 初始化日志句柄

MY_CONF_INS* my_conf_init(const char* file_path, const char* file_name); 

file_path: 配置目录
file_name: 配置文件

2) 获得int

MY_CONF_GET_INT32(key, confs, input_value) 

key :获得key
confs: 配置文件句柄
input_value : 配置返回的结果引用
注意:成功返回true,否则返回false

3) 缺省获得int

MY_CONF_GET_INT32_DEFAULT(key, confs, input_value, default_value) 

key :获得key
confs: 配置文件句柄
input_value : 配置返回的结果引用
default_value :如果没有结果,返回default_value
注意:成功返回true,否则返回false

4) 获得unsigned int

MY_CONF_GET_UINT32(key, confs, input_value) 

key :获得key
confs: 配置文件句柄
input_value : 配置返回的结果引用
注意:成功返回true,否则返回false

5) 缺省获得unsigned int

MY_CONF_GET_INT32_DEFAULT(key, confs, input_value, default_value) 

key :获得key
confs: 配置文件句柄
input_value : 配置返回的结果引用
default_value :如果没有结果,返回default_value
注意:成功返回true,否则返回false

6) 获得string

MY_CONF_GET_STR(key, confs, input_str) 

key :获得key
confs: 配置文件句柄
input_str : 配置返回的结果引用
注意:成功返回true,否则返回false, input_str必须申请初始化大小

7) 缺省获得string

MY_CONF_GET_STR_DEFAULT(key, confs, input_str, default_str) 

key :获得key
confs: 配置文件句柄
input_str : 配置返回的结果引用
default_str : 如果没有结果返回缺省值
注意:成功返回true,否则返回false, input_str必须申请初始化大小

3 示例

 1) 代码

#include "mylog.h"
#include "myconf.h"
#include 
using namespace std;


int main()
{
    my_log_init("./log", "sample.log", "sample.log.wf", 16);
    MY_LOG_DEBUG("main begin");

    MY_CONF_INS* my_ins = my_conf_init("./conf", "sample.conf");
    if( my_ins == NULL)
    {
        MY_LOG_FATAL("file is not exist or not vaild");
        return -1;
    }

    bool ret;
    //get int
    int int_a1;
    ret = MY_CONF_GET_INT32("int_a", my_ins, int_a1);
    if(ret == true)
    {
        cout << "int_a1 is " << int_a1 << endl;
    }
    else
    {
        cout << "get int_a1 fail";
    }

    //get uint32
    uint32 uint32_b1;
    ret = MY_CONF_GET_UINT32("int_b", my_ins, uint32_b1);
    cout << "uint32_b1 is " << uint32_b1 << endl;

    //get int 缺省值
    uint32 int_a2;
    ret = MY_CONF_GET_UINT32_DEFAULT("int_a_default", my_ins, int_a2, 100);
    cout << "int_a_default " << int_a2 << endl;

    char string_noraml[1024];
    ret = MY_CONF_GET_STR("string_noraml", my_ins, string_noraml);
    cout << "string_noraml is " <<  string_noraml << endl;

    char string_quoto[1024];
    ret = MY_CONF_GET_STR("string_quoto", my_ins, string_quoto);
    cout << "string_quoto is " <<  string_quoto << endl;

    my_conf_close(my_ins);
    MY_LOG_DEBUG("main end");
    return 0;

}

b) 运行结果

加载中

评论(0)

暂无评论

暂无资讯

暂无问答

springboot系列四 profile 多环境配置

我们在开发中和上线后的一些配置参数不通,如:数据库连接、短信验证等 springboot为我们提供了区分环境配置的方法 同一个配置文件不同环境配置 同一个配置文件application.yml中可以使用---...

11/23 17:18
13
0
solrCloud搭建的方式方法

solrCloud搭建的方式方法 1.zoookeeper集群搭建 ①下载zookeeper解压,将conf目录下的zoo_sample.cfg文件重命名为:zoo.cfg。 ②在某个盘符下面新建data和logs两个文件夹,并将zoo.cfg文件的dat...

2015/02/04 15:27
66
0
solr配置文件上传zookeeper

# #将Tomcat下solr/WEB-INF/lib下的所有文件和myCore/conf的配置文件上传zookeeper # java -classpath D:/solrCloud/tomcat1/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd ...

2014/12/18 09:53
63
0
常规Solor操作

#第一次启动,初始化ZK ./solr start -c -p 8983 -s match1 -d server -a "-Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=myconf -DnumShards=5" -V #后续启动 ./so...

2015/12/02 15:44
11
0
ubuntu 14 mysql 主从数据库热备实验

ubuntu 14 mysql 主从数据库热备实验

2015/08/21 15:48
62
0
solrcloud分布式集群部署&zookeeper集群安装

Solrcloud集群搭建 使用solrcloud有几点需要注意的: 索引数据量比较大;配置是统一的(zookeeper会保持配置信息的一致性) 如果索引数据量不大,并且需求变动比较多,field要经常变动的可以...

2013/12/11 15:49
5.8K
0
JGroups 初探

最近研究 JAVA 集群技术,看到 jgroups 这个框架,网上有些例子,非常简单。可以参考其官方网址:http://www.jgroups.org/manual/index.html 按捺不住,自己还是动手写了一个试试。关于 JGro...

2016/01/15 20:50
1K
1
配置Solr集群

配置Solr服务器集群 本文所讲的Solr集群服务器是基于 Tomcat7 + Zookeeper3.4.6 + Solr4.6 部署Zookeeper (1)下载Zookeeper3.4.6 下载地址为 http://www.apache.org/dyn/closer.cgi/zookeep...

08/07 15:36
24
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部