### 利用 CIniFile 类读写 INI 文件

INI 文件最初被用来存在 Windows 应用程序的信息，但是随着用户程序的不断增加，导致系统的 INI 文件不断增大，使得 INI 文件变得臃肿，数据查询变得缓慢。后来，Windows 系统放弃了使用 INI 文件，而改用注册表来存储应用程序信息。但是，在用户开发的一些应用程序中，我们还是可以看到 INI 文件的身影。通常，用户使用 INI 文件来存储应用程序的配置信息。例如，存储上一次用户登录的用户名称，存储上一次播放的歌曲等。图 1 显示了一个 INI 文件，从中，我们可以了解 INI 文件的基本结构。

图 1 INI 文件结构

在 INI 文件中，节名由“[]”标识，其中的内容为节名，其后是键名，键名之后有一个等号，然后是键值。对于一个 INI 文件，可以多个节，每个节可以包含多个键。

为了方便在程序中读写 INI 文件，笔者设计了一个 CIniFile 类。在该类中定义了两个文件用于向 INI 文件中写入数据和从 INI 文件中读取数据。CIniFile 类的声明如下：

class CIniFile

{

public:

static bool WriteData(char *pszFileName, char* pApp, char *pszKey, char *pValue); //写入数据

static unsigned int ReadData(char *pszFileName, char* pApp, char *pszKey, char *pValue); //读取数据

};

下面的代码演示了使用 CIniFile 类读写 INI 文件。

int main(int argc, char* argv[])

{

CIniFile::WriteData("c:\\user.ini", "用户信息", "用户名称", "VC"); //向 INI 文件写入数据

CIniFile::WriteData("c:\\user.ini", "用户信息", "用户密码", "BCCD"); //向 INI 文件写入数据

char szUserName[128] = {0};

char szPassword[128] = {0};

CIniFile::ReadData("c:\\user.ini", "用户信息", "用户名称", szUserName); //从 INI 文件中读取数据

CIniFile::ReadData("c:\\user.ini", "用户信息", "用户密码", szPassword); //从 INI 文件中读取数据

cout << "用户名称 " << szUserName << endl; //输出信息

cout << "用户密码 " << szPassword << endl;

return 0;

}

效果如图 2 所示。

图 2 实例效果

创建的 INI 文件如图 3 所示。

图 3 创建的 INI 文件