文档详情

C++实现读写ini配置文件的示例代码.docx

发布:2025-06-09约7.93千字共11页下载文档
文本预览下载声明

C++实现读写ini配置文件的示例代码

目录1.概述2.ini格式语法3.配置读取4.demo示例5.自动生成读取代码

1.概述

配置文件的读取是每个程序必备的功能,配置文件的格式多种多样,例如:ini格式、json格式、xml格式等。其中属ini格式最为简单,且应用广泛。

2.ini格式语法

注释内容采用#或者开头。配置是由一系列的section组成,每个section就是一个关联的配置块,section使用[]包含起来。每个section下配置的是具体的配置项,每个配置项是使用=分隔的key-value对。

下面让我们来看一个简单的示例,假设我们有一个配置文件demo.cfg,它的内容如下所示。

[server]

ip=127.0.0.1

port=8088

上面的配置内容中,有一个server的配置节,在这个配置节里有两个配置项,它们分别是ip和port,ip的值为127.0.0.1,port的值为8088。

3.配置读取

知道了ini格式语法之后,就可以根据语法规则来读取配置文件内容了,春哥这里实现了一个非常精简易用的版本,源代码文件config.hpp的内容如下。

#pragmaonce

#includefstream

#includefunctional

#includestring

#includeunordered_map

namespaceConfig{

classIni{

public:

voidDump(std::functionvoid(conststd::string,conststd::string,conststd::string)deal){

autoiter=cfg_.begin();

while(iter!=cfg_.end()){

autokv_iter=iter-second.begin();

while(kv_iter!=iter-second.end()){

deal(iter-first,kv_iter-first,kv_iter-second);

++kv_iter;

++iter;

boolLoad(std::stringfile_name){

if(file_name==)returnfalse;

std::ifstreamin;

std::stringline;

in.open(file_name.c_str());

if(notin.is_open())returnfalse;

while(getline(in,line)){

std::stringsection,key,value;

if(notparseLine(line,section,key,value)){

continue;

setSectionKeyValue(section,key,value);

returntrue;

voidGetStrValue(conststd::stringsection,conststd::stringkey,std::stringvalue,std::stringdefault_value){

value=default_value;

if(cfg_.find(section)==cfg_.end()){

return;

if(cfg_[section].find(key)==cfg_[section].end()){

return;

value=cfg_[section][key];

voidGetIntValue(conststd::stringsection,conststd::stringkey,int64_tvalue,int64_tdefault_value){

value=default_value;

if(cfg_.find(section)==cfg_.end()){

return;

if(cfg_[section].find(key)==cfg_[section].end()){

return;

value=atol(cfg_[section][key].c_str());

private:

voidltrim

显示全部
相似文档