INI解析模块的C++实现

INI文件格式是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成,常用于微软Windows操作系统中。

节(section)

节用方括号括起来,单独占一行,例如:
[section]

键(key)

键(key)又名属性(property),单独占一行用等号连接键名和键值,例如:
name=value

注释(comment)

注释使用英文分号(;)开头,单独占一行。在分号后面的文字,直到该行结尾都全部为注释,例如:
; comment text
 
微软在windows平台提供了一系列API来读取和保存INI文件的配置设置
GetPrivateProfileString, WritePrivateProfileString等
 
Unix Like系统不提供默认的接口访问ini文件,基于这个需求,写了一个跨平台的ini解析的模块
支持utf-8, unicode大端小端文件的编码格式的ini文件读取,最终以utf-8格式保存。
 
工程已上传至github
 
辅助功能模块两个:
1. CStdString: 提供CString和std::string功能的字符串类
2. Utf8_16: 提供文本文件编码解析功能
 
主功能模块类
CIniParser
外部接口:

bool Parse(LPCTSTR lpIniFile = _T(""));
bool SetValue(const CStdString& strSection, const CStdString& strKey, const CStdString& strVal);
bool RemoveKey(const CStdString& strSection, const CStdString& strKey);
bool RemoveSection(const CStdString& strSection);

void DumpIni(void);

bool Save();

Parse: 接受一个参数,ini文件的绝对路径

SetValue: 接受三个参数,section名,key名,value值。功能是设置section中的键值对,如果section不存在,则创建新的section。

RemoveKey: 接受两个参数,section名,key名。功能是从section移除key指向的键值对。

RemoveSection: 接口一个参数,section名。功能是移除整个section。

DumpIni: 输出解析完成的ini文件。

Save:保存ini配置至文件。

 

posted @ 2016-05-09 14:41  Jojodru  阅读(1534)  评论(0编辑  收藏  举报