INI文件是Windows系统中一类比较重要的文件,可以使用一些API函数直接对INI文件进行读写操作。
主要用三个函数就可以实现简单的INI文件读写功能,这三个函数是:
1)WritePrivateProfileString:可以在文件中添加字段,可以添加String也可以添加Int,返回值表示写入是否成功,函数原型为:
BOOL WritePrivateProfileString(
LPCWTSTR lpAppName, // 指向指定字段的字符串
LPCWTSTR lpKeyName, // 指向指定键的字符串
LPCWTSTR lpString, // 指向指定值的字符串
LPCWTSTR lpFileName // 指向文件名称字符串
);
2)GetPrivateProfileString:从文件中读取String类型的数据,返回值表示读出的字符串的长度,函数原型为:
DWORD GetPrivateProfileString(
LPCWTSTR lpAppName, //指向指定字段的字符串
LPCWTSTR lpKeyName, //指向键的字符串
LPCWTSTR lpDefault, //如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量
LPWTSTR lpReturnedString, //存放INI文件中值的目的缓存区
DWORD nSize, //目的缓冲区的大小,以字节为单位
LPCWTSTR lpFileName //指向INI文件名称的字符串
);
3)GetPrivateProfileInt:从文件中读取Int类型的数据,返回值就是要读取的参数,函数原型为:
UINT GetPrivateProfileInt(
LPCWTSTR lpAppName, //指向指定字段的字符串
LPCWTSTR lpKeyName, //指向键的字符串
INT nDefault, //如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量
LPCWTSTR lpFileName //指向INI文件名称的字符串
);
实例:
下边的例子使用这三个函数进行文件操作。得到的结果为:在appname.ini文件中写入如下数据,
[String]
FirstString=It all worked out okay.
[Int]
FirstInt=123
程序如下:
#include<iostream>
using namespace std;
#include <windows.h>
int main(int argc, char* argv[])
{
LPWSTR inBuf = new WCHAR[200];;
int testInt1 = 0;
int testInt2 = 0;
//向INI文件中添加一些键值
WritePrivateProfileString (_T("String"), _T("FirstString"), _T("It all worked out okay."), _T(".\\appname.ini"));
WritePrivateProfileString (_T("Int"), _T("FirstInt"), _T("123"), _T(".\\appname.ini"));
//测试一下添加的正确性
GetPrivateProfileString (_T("String"), _T("FirstString"), _T("Bogus Value: Get didn't work"), inBuf, 80, _T(".\\appname.ini"));
testInt1 = GetPrivateProfileInt(_T("Int"),_T("FirstInt"),2,_T(".\\appname.ini"));
testInt2 = GetPrivateProfileInt(_T("Int"),_T("SecondInt"),2,_T(".\\appname.ini"));
wcout<<inBuf<<endl;
cout<<testInt1<<endl;
cout<<testInt2<<endl;
return 0;
}