一、INI操作类引入
我们在开发程序时,经常会存储一些不是那么重要的信息,这些信息通常满足下列几个特点:
1、数据量较少
2、无需保密
3、需要长时间存储
这个时候,如果我们使用数据库,就显得完全没有必要了。当然,你也可以使用xml等方式进行存储,但对于不会使用xml等配置读写操作的人来说,xml又显得麻烦了那么一丢丢,学习xml其实不难,从学习到配置再到使用,十几分钟也能搞定。对对于懒人来说,ini读写操作更为方便,因为他可以让你1、2分钟就学会使用。Why?
1、使用INI文件读写,只需要一个.h和.cpp
2、所有可用函数加起来不超过10个,简洁易懂
二、INI文件结构介绍
ini配置文件本质就是一个txt文档,但后缀名为ini,如my.ini。文档中仅有三部分,分别是节点(Node)、键(Key)、值(Value)。
可以很清晰明了的看出,node表示一个模块或者一个功能,key1,key2等分别是该模块/功能下的属性,而value1、value2等则为对应属性的值。
图中login模块记录了用户的账户和密码,那么下次运行程序时,程序即可实现自动登录,而不用用户再次进行登录操作。
三、函数介绍
1) 设置INiI文件路径
BOOL SetFileName(LPCTSTR lpFileName);
这是读写ini文件的前提,目的是设置配置文件的绝对路径,注意,是绝对路径。该操作类无法识别相对路径。
设置成功返回TRUE。
2)创建/修改指定键值
BOOL SetValue(LPCTSTR lpSection, LPCTSTR lpKey, LPCTSTR lpValue,bool bCreate=true);
lpSection:节点名称
lpKey:键
lpValue:要设置的值
bCreate:如果该节点/键不存在,是否自动创建
设置成功返回TRUE。
3) 获取指定键值
CString GetValue(LPCTSTR lpSection, LPCTSTR lpKey)
获取节点为lpSection,key为lpKey的值。
此处我返回的是CString,非MFC开发,将其改为对应字符串类即可。
4) 删除节点
BOOL DelSection(LPCTSTR strSection);
删除节点名称为strSection的节点以及该节点所有键值。
设置成功返回TRUE。
5) 删除键值
BOOL DelKey(LPCTSTR lpSection, LPCTSTR lpKey);
删除节点名称为strSection的节点下键名为lpKey的属性。
设置成功返回TRUE。
6) 枚举全部节点
int GetSections(CStringArray& arrSection);
传入一个字符串数组,获取ini文件中所有的节点名称,并返回节点数目。
此处传入的是MFC下的字符串数组CStringArray,代码也是非常简单,非MFC下直接修改传入参数类型以及函数中给数组赋值的方式即可。
7) 枚举节点中的所有键值
int GetKeyValues(CStringArray& arrKey,CStringArray& arrValue,LPCTSTR lpSection);
获取节点名为lpSection的节点下所有的键与值,返回键的数量。
arrKey与arrValue均为传入参数。非MFC下修改方式见6
8) 删除所有节点(清空文件)
BOOL DelAllSections();
清空ini文件,成功返回TRUE。
四、下载链接
http://download.csdn.net/download/xyz59886/10266714