- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
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
您可能关注的文档
最近下载
- 1_东南营小学体育课教案水平一潘建元2(1)-体育1至2年级全一册教案.docx VIP
- 人教版2025秋小学数学三年级教学设计已知一个数的几倍是多少,求这个数.pdf VIP
- 人教版2025秋小学数学三年级教学设计求一个数的几倍是多少.pdf VIP
- 酒店前台UPSELL培训教学课件.pptx VIP
- 西门子变频器V20说明书SINAMICS-V20.pdf VIP
- 人教版2025秋小学数学三年级教学课件数量间的乘除关系求一个数的几倍是多少.pptx VIP
- 【水电站施组】引水式电站机电金属结构安装工程施工组织设计(最全).doc VIP
- 人教版2025秋小学数学三年级教学课件数量间的乘除关系已知一个数的几倍是多少,求这个数.pptx VIP
- MathCAD软件入门教程.pdf VIP
- 中药剂型PPT参考幻灯片.ppt VIP
文档评论(0)