Iniparser库详解
Posted Respect@
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Iniparser库详解相关的知识,希望对你有一定的参考价值。
这里写自定义目录标题
1.概念
iniparser是针对INI文件的解析器。ini文件则是一些系统或者软件的配置文件。
程序员最应该懂得的第一件事情就是利用别人造好的轮子,我们使用开源库的实现https://github.com/ndevilla/iniparser。
那我们怎么实现从ini文件里加载上这些内容呢?首先分析就是读取文件内容,然后依照文件内容,把这些字段和值组成key-value的形式保存在某个数据结构中,这样我们通过key(区段+字段)就能找到value(值)
格式
[database]
ip = 127.0.0.1 ;
port = 3306 ;
user = root ;
pwd = 123456 ;
db = qiniubike;
[server]
port = 9090;
例子
typedef struct st_env_config
//数据库的配置
std::string db_ip;
unsigned short db_port;
std::string db_user;
std::string db_pwd;
std::string db_name;
//服务的配置
unsigned short svr_port;
st_env_config()
;
st_env_config(const std::string& db_ip, unsigned int db_port, const std::string& db_user, \\
const std::string& db_pwd, const std::string& db_name, unsigned short svr_port)
this->db_ip = db_ip;
this->db_port = db_port;
this->db_user = db_user;
this->db_pwd = db_pwd;
this->db_name = db_name;
this->svr_port = svr_port;
;
st_env_config& operator =(const st_env_config& config)
if (this != &config)
this->db_ip = config.db_ip;
this->db_port = config.db_port;
this->db_user = config.db_user;
this->db_pwd = config.db_pwd;
this->db_name = config.db_name;
this->svr_port = config.svr_port;
return *this;
_st_env_config;
bool Iniconfig::loadfile(const std::string& path)
dictionary* ini = NULL;
ini = iniparser_load(path.c_str());
if (ini==NULL)
LOG_ERROR("cannot parse file: %s\\n", path.c_str());
return false;
char* ip = iniparser_getstring(ini, "database:ip", "127.0.0.1");
int port = iniparser_getint(ini, "database:port", 3306);
char* user = iniparser_getstring(ini, "database:user", "root");
char* pwd = iniparser_getstring(ini, "database:pwd", "123456");
char* db = iniparser_getstring(ini, "database:db", "dongnaobike");
int sport = iniparser_getint(ini, "server:port", 9090);
_config = st_env_config(std::string(ip), port, std::string(user), \\
std::string(pwd), std::string(db), sport);
iniparser_freedict(ini);
_isloaded = true;
return true;
以上是关于Iniparser库详解的主要内容,如果未能解决你的问题,请参考以下文章
linux 进程间通信 dbus-glib实例详解四(下) C库 dbus-glib 使用(附代码)
linux 进程间通信 dbus-glib实例详解四(上) C库 dbus-glib 使用(附代码)(编写接口描述文件.xml,dbus-binding-tool工具生成绑定文件)(列集散集函数)