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值,一看便知,不多说。
转自:http://blog.csdn.net/qq575787460/article/details/8178344