ini文件的格式为
[sectionName1]
key1=value1
key2=value2
[sectionName2]
key3=value3
......
现在C盘有一下ini文件:1.ini
写操作:
把[001]下面大张三改为张三:
::WritePrivateProfileString("001","name","张三","c:\\1.ini");
给[001]新添加一个键值对
::WritePrivateProfileString("001","sex","男","c:\\1.ini");
新添加一个section,[003] name=王五
::WritePrivateProfileString("003","name","王五","c:\\1.ini");
写操作注意:
BOOL WritePrivateProfileString( LPCTSTR lpAppName, // section name LPCTSTR lpKeyName, // key name LPCTSTR lpString, // string to add LPCTSTR lpFileName // initialization file );
如果section name不存在,将会创建一个新的section;
如果key name不存在,将会创建一个新的key
删除操作:
删除一个key,只需把值重写为NULL即可,例如:删除[001]下面的name属性
::WritePrivateProfileString("001","name",NULL,"c:\\1.ini");
删除一个section,只需把key name和key value全设为NULL即可,例如,删除[001]
::WritePrivateProfileString("001",NULL,NULL,"c:\\1.ini");
读操作:
获取所有的section name
#include <windows.h>
#include <IOSTREAM.H>
#include <STRING>
using namespace std;
int main()
{
//这里申请的缓冲区较大,实际应该看情况而定
char buf[1024]={0};
::GetPrivateProfileSectionNames(buf,sizeof buf,"c:\\1.ini");
/*
**把char数组付给string的依据
**GetPrivateProfileSectionNames获取的sectionnames以'\0'间隔,存在buf中
**而string遇见\0就终止了
*/
char *p=buf;
string str=p;
while (str.length()!=0)
{
cout<<str.c_str()<<endl;
p+=str.length()+1;
str=p;
}
return 0;
}
GetPrivateProfileString和GetPrivateProfileInt用于读取string和int值,一看便知,不多说。