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配置至文件。