一、向ini文件中写入信息的函数
1.把信息写入系统的win.ini文件
BOOLWriteProfileString(
)
2.把信息写入自己定义的.ini文件
BOOLWritePrivateProfileStrin
)
如:
::WriteProfileString("Test","id","xym");
//在win.ini中创建一个Test节,并在该节中创建一个键id,其值为xym
::WritePrivateProfileStrin
//在Ex1目录下的ex1.ini中创建一个Test节,并在该节中创建一个键id,其值为xym
//若Ex1.ini文件与读写该文件的程序在同一个目录下,则上面语句也可写为:
::WritePrivateProfileStrin
需要注意的是,C系列的语言中,转义字符'\\'表示反斜线'\'。另外,当使用相对路径时,\\前的.号不能丢掉了。
二、从ini文件中读取数据的函数
1、从系统的win.ini文件中读取信息
(1) 读取字符串
DWORDGetProfileString(
)
如:
CString str;
::GetProfileString("Test","id","Error",str.GetBuffer(20),20);
(2) 读取整数
UINTGetProfileInt(
)
如使用以下语句写入了年龄信息:
::WriteProfileString("Test","age","25");
//在win.ini中创建一个Test节,并在该节中创建一个键age,其值为25
则可用以下语句读取age键的值:
int age;
age=::GetProfileInt("Test","age",0);
2、从自己的ini文件中读取信息
(1) 读取字符串
DWORDGetPrivateProfileString(
)
如:
CString str;
::GetPrivateProfileString("Test","id","Error",str.GetBuffer(20),20,".\\ex1.ini");
或:
::GetPrivateProfileString("Test","id","Error",str.GetBuffer(20),20,"d:\\vc\\Ex1\\ex1.ini");
(2) 读取整数
UINTGetPrivateProfileInt(
)
如使用以下语句写入了年龄信息:
::WritePrivateProfileStrin
//在ex1.ini中创建一个Test节,并在该节中创建一个键age,其值为25
则可用以下语句读取age键的值:
int age;
age=::GetPrivateProfileInt("Test","age",0,".\\ex1.ini");
三、 删除键值或节
BOOLWriteProfileString(
)
::WriteProfileString("Test",NULL,NULL);
::WriteProfileString("Test","id",NULL);
::WritePrivateProfileStrin
::WritePrivateProfileStrin
四、如何判断一个ini文件中有多少个节
DWORDGetPrivateProfileSection
)
下面的是用来统计一个ini文件中共有多少个节的函数,当然,如果需要同时找到每个节中的各个键及其值,根据找到节名就可以很容易的得到了。
intCTestDlg::CalcCount(void)
{
TCHAR
char * pSectionName;//保存找到的某个节名字符串的首地址
inti;
intj=0;
intcount=0;
//CStringname;
//charid[20];
::GetPrivateProfileSection
for(i=0;i<2048;i++,j++)
{
}
return count;
}
//
/
在VC程序中利用系统提供的GetPrivateProfileString及WritePrivateProfileStrin
假设在当前目录下有一个文件名为Tets.ini的文件
用于保存用户名和密码
文件格式如下:
[Section1]
Item1=huzhifeng
Item2=1234565
1.写INI文件
voidCINI_File_TestDlg::On
{
// TODO: Add yourcontrol notification handler co
CStringstrSection
CStringstrSectionKey
charstrBuff[256];
CStringstrValue
CStringstrFilePath;
strFilePath=GetCurrentDirectory(256,strBuff);//获取当前路径
strFilePath.Format("%s\\Test.ini",strBuff);
GetDlgItemText(IDC_EDIT_NAME,strValue);
WritePrivateProfileStrin
strSectionKey="Item2";
GetDlgItemText(IDC_EDIT_PASSWORD,strValue);
WritePrivateProfileStrin
}
2.读INI文件内容
voidCINI_File_TestDlg::On
{
// TODO: Add yourcontrol notification handler co
CStringstrSection
CStringstrSectionKey
charstrBuff[256];
CStringstrValue
CStringstrFilePath;
strFilePath=GetCurrentDirectory(256,strBuff);//获取当前路径
strFilePath.Format("%s\\Test.ini",strBuff);
GetPrivateProfileString(strSection,strSectionKey,NULL,strBuff,80,strFilePath);//读取ini文件中相应字段的内容
strValue=strBuff;
SetDlgItemText(IDC_EDIT_NAME,strValue);
strSectionKey="Item2";
GetPrivateProfileString(strSection,strSectionKey,NULL,strBuff,80,strFilePath);
strValue=strBuff;
SetDlgItemText(IDC_EDIT_PASSWORD,strValue);
UpdateData(FALSE);
}