65.9K
CodeProject 正在变化。 阅读更多。
Home

CIniFile

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.39/5 (13投票s)

2000年4月28日

viewsIcon

480183

downloadIcon

2783

一个易于在应用程序中实现 INI 设置文件的类。

Sample Image - cinifile.gif

引言

在每个我编写的程序中,我最终都会使用某种 INI 文件来保存从一次运行到下一次运行的设置。与其在每个程序中单独实现它,我终于写了这个类,CIniFile。它设置和使用起来都很简单。

创建 CIniFile 对象后,调用成员函数 SetPath(CString newpath) 来设置 INI 文件的路径/文件名,以便从中读取和写入。

要将 INI 文件数据读取到类中,请调用 ReadFile()

要从类中检索数据,请使用 GetValue 或其重载函数之一。

//returns value of keyname/valuename as CString
CString GetValue(CString keyname, CString valuename);

//returns value of keyname/valuename as int
int GetValueI(CString keyname, CString valuename);
 
//returns value of keyname/valuename as double
double GetValueF(CString keyname, CString valuename);

要设置类中的数据值,请调用 SetValue 或其重载函数之一。

bool SetValue(CString key, CString valuename, CString value, bool create = 1); 
bool SetValueI(CString key, CString valuename, int value, bool create = 1);
bool SetValueF(CString key, CString valuename, double value, bool create = 1);

如果不想创建该键/值(如果它不存在),请将可选参数 create 设置为 false。

SetValue 在值成功存储时返回 TRUE,否则返回 FALSE

要从类中删除一个值,请调用 DeleteValue(CString keyname, CString valuename)。如果删除该值,此函数将返回 TRUE,否则返回 FALSE

要从类中删除整个键,请调用 DeleteKey(CString keyname)。如果删除该键,此函数将返回 TRUE,否则返回 FALSE

要删除类中存储的所有数据,请调用 Reset()

其他有用的函数是 GetNumKeys(),它返回 INI 文件中的键数,以及 GetNumValues(CString keyname),它返回存储在指定键中的值的数量。

最后,要将所有存储的数据写入指定的 INI 文件,请调用 WriteFile()

就是这样!很简单。

将评论发送至 cabadam@tamu.edu

更新

  • 2000 年 5 月 5 日

    更新了源代码和演示文件。

  • 2003 年 3 月 2 日

    自从我上次查看这篇文章以来已经过了很长时间,但由于对该类的非 MFC 版本有很多兴趣,我决定将其上传到这里。由于 Shane Hill 重写的非 MFC 版本包含更多功能,我决定从这里删除原始 MFC 类。这意味着几件事。首先 - 文章顶部的演示图片是错误的。等号 (=) 符号周围没有空格。此外,即使该类包含更多功能,该类的基本操作在很大程度上保持不变。新功能包括枚举现有键和值以及将注释添加到 INI 文件。有关新增功能,请参阅文档完善的头文件。

© . All rights reserved.