VC中操作INI文件的API
VC中操作INI文件的API
(1)操作系统配置文件Win.ini的函数:
函数名 |
功能 |
GetProfileSection |
读取win.ini中指定节lpAppName中所有键名及其值。lpReturnedString字符串形式如下: Key1=Value1/0Key2=Value2/0…KeyN=ValueN/0/0 |
GetProfileString |
读取win.ini中指定节lpAppName中键名为lpKeyName对应变量的字符串值。 |
GetProfileInt |
读取win.ini中指定节lpAppName中键名为lpKeyName对应变量的整数值。 |
WriteProfileSection |
写(替换)win.ini中指定节lpAppName中的键值。 lpString字符串形式同GetProfileSection中的lpReturnedString。 |
WriteProfileString |
写(替换)win.ini中指定节lpAppName中键名为lpKeyName对应变量的字符串值。 |
(2)操作用户自定义配置文件(PrivateProfile.ini)的函数:
函数名 |
功能 |
GetPrivateProfileSectionNames |
读取lpFileName指定的配置文件中所有的节名。lpszReturnBuffer字符串形式如下: Section1/0Section2/0…SectionN/0/0 |
GetPrivateProfileSection |
同GetProfileSection。 |
GetPrivateProfileString |
同GetProfileString。 |
GetPrivateProfileInt |
同GetProfileInt |
GetPrivateProfileStruct |
须同WritePrivateProfileStruct配套使用。 |
WritePrivateProfileSection |
同WriteProfileSection |
WritePrivateProfileString |
同WriteProfileString |
WritePrivateProfileStruct |
不常用。 |
注意:
(1)使用得最频繁的是 GetPrivateProfileString 和 WritePrivateProfileString,没有WriteProfileInt/WritePrivateProfileInt函数。
(2)Get系列读取节键值,如果文件路径有误或节键名不对则返回设定的默认值。
(3)访存自定义配置文件时,文件路径lpFileName必须完整,文件名前面的各级目录必须存在。如果lpFileName文件路径不存在,则函数返回FALSE,GetLastError() = ERROR_PATH_NOT_FOUND。1.如果路径正确,但是文件不存在,则该函数将先创建该文件。2.如果路径及文件存在,则在现有ini文件基础上进行读写。3.如果 lpFileName 只指定文件名而没有路径的话,调用API将会去 Windows 的安装目录去查找而不会在当前目录查找。
(4)要对调用API的模块(exe)所在目录下进行配置文件操作,可使用形如“.//config.ini”的相对路径,注意转义符。
(5)调用WritePrivateProfileSection,若参数三 lpString为NULL,则可将对应section的全部内容清空;调用WritePrivateProfileString,若参数三 lpString为NULL,则可将对应key删除。
鉴于XML的树形描述层次结构性清晰,现在很多软件都大面积使用XML文件进行配置,如QQ的全局配置文件C:/Program Files/Tencent/QQ/gf-config.xml。java程序的配置文件基本都使用XML格式,C++中并没有操作XML文件的标准库。
//读写系统的INI
Windows都有C:\Windows\win.ini 本次操作就是读写此文件
1. 把信息写入系统的win.ini文件
BOOL WriteProfileString(
LPCTSTR lpAppName, //节的名字,是一个以0结束的字符串
LPCTSTR lpKeyName, //键的名字,是一个以0结束的字符串。若为NULL,则删除整个节
LPCTSTR lpString //键的值,是一个以0结束的字符串。若为NULL,则删除对应的键
)
//在win.ini中创建一个Test节,并在该节中创建一个键id,其值为xym
::WriteProfileString("Test","id","xym");
2. 读取字符串
DWORD GetProfileString(
LPCTSTR lpAppName, // 节名
LPCTSTR lpKeyName, // 键名,读取该键的值
LPCTSTR lpDefault, // 若指定的键不存在,该值作为读取的默认值
LPTSTR lpReturnedString, // 一个指向缓冲区的指针,接收读取的字符串
DWORD nSize // 指定lpReturnedString指向的缓冲区的大小
)
CString str;
::GetProfileString("Test","id","Error",str.GetBuffer(20),20);
3. 读取整数
UINT GetProfileInt(
LPCTSTR lpAppName, // 节名
LPCTSTR lpKeyName, // 键名,读取该键的值
INT nDefault // 若指定的键名不存在,该值作为读取的默认值
)
::WriteProfileString("Test","age","25");
int age;
age=::GetProfileInt("Test","age",0);
4. 删除键(值)
::WriteProfileString("Test",NULL,NULL); //删除win.ini中的Test节
::WriteProfileString("Test","id",NULL); //删除win.ini中的id键
5. 写值
BOOL WriteProfileSection( LPCTSTR lpAppName, // section name LPCTSTR lpString // data buffer);
WriteProfileSection("1234567890","fdsgfdsg");
结果:
[1234567890]
Fdsgfdsg
6. 读值
DWORD GetProfileSection( LPCTSTR lpAppName, // section name LPTSTR lpReturnedString, // return buffer DWORD nSize // size of return buffer);
CString str;
GetProfileSection("1234567890",str.GetBuffer(256),256);
///读写用户自定义的INI
1. 把信息写入用户的win.ini文件
BOOL WritePrivateProfileString(
LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串
LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。若为NULL,则删除整个节
LPCTSTR lpString, // 键的值,是一个以0结束的字符串。若为NULL,则删除对应的键
LPCTSTR lpFileName // 要写入的文件的文件名。若该ini文件与程序在同一个目录下,也可使用相对
//路径,否则需要给出绝度路径。
)
::WritePrivateProfileString("Test","id","xym","d://vc//Ex1//ex1.ini");
//在Ex1目录下的ex1.ini中创建一个Test节,并在该节中创建一个键id,其值为xym
//若Ex1.ini文件与读写该文件的程序在同一个目录下,则上面语句也可写为:
::WritePrivateProfileString("Test","id","xym",".//ex1.ini");
//::WritePrivateProfileString("Test","id","xym","ex1.ini");这样写的话会在windows目录下生成配置文件
2. 读取字符串
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // 节名
LPCTSTR lpKeyName, // 键名,读取该键的值
LPCTSTR lpDefault, // 若指定的键不存在,该值作为读取的默认值
LPTSTR lpReturnedString, // 一个指向缓冲区的指针,接收读取的字符串
DWORD nSize, // 指定lpReturnedString指向的缓冲区的大小
LPCTSTR lpFileName // 读取信息的文件名。若该ini文件与程序在同一个目录下,也可使用相
//对路径,否则需要给出绝度路径。
)
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");
3. 读取整数
UINT GetPrivateProfileInt(
LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串
LPCTSTR lpKeyName, // 键名,读取该键的值
INT nDefault, // 若指定的键名不存在,该值作为读取的默认值
LPCTSTR lpFileName // 要写入的文件的文件名。若该ini文件与程序在同一个目录下,也可使用相对
//对路径,否则需要给出绝度路径。
)
::WritePrivateProfileString("Test","age","25",".//ex1.ini");
int age;
age=::GetPrivateProfileInt("Test","age",0,".//ex1.ini");
4. 删除键(值)
::WritePrivateProfileString("Test",NULL,NULL,".//ex1.ini"); //删除ex1.ini中的Test节
::WritePrivateProfileString("Test","id",NULL,".//ex1.ini"); //删除ex1.ini中的id键
5.写值
BOOL WritePrivateProfileSection( LPCTSTR lpAppName, // section name LPCTSTR lpString, // data LPCTSTR lpFileName // file name );
WritePrivateProfileSection("1234567890","fdsgfdsg",".//表情协议.ini");
结果:
[1234567890]
Fdsgfdsg
6. 读值
DWORD GetPrivateProfileSection( LPCTSTR lpAppName, // section name LPTSTR lpReturnedString, // return buffer DWORD nSize, // size of return buffer LPCTSTR lpFileName // initialization file name );
CString str;
GetPrivateProfileSection("1234567890",str.GetBuffer(256),256,".//表情协议.ini");
7.GetPrivateProfileSectionNames函数
DWORD GetPrivateProfileSectionNames(
LPTSTR lpszReturnBuffer, // 指向一个缓冲区,用来保存返回的所有节名
DWORD nSize, // 参数lpszReturnBuffer的大小
LPCTSTR lpFileName // 文件名,若该ini文件与程序在同一个目录下,
//也可使用相对路径,否则需要给出绝度路径
)
CString str;
GetPrivateProfileSectionNames(str.GetBuffer(256),256,".\\表情协议.ini");
VC中操作INI文件的API相关推荐
- vc中操作INI文件函数
一 VC中操作INI文件函数 函数名 功能 备注 GetPrivateProfileInt 读取INI文件指定块中的键名对应的整数值. GetPriva ...
- VC中读写ini文件
我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中. 1.所用的WINAP ...
- VC++中实现INI文件读写的方法和示例
一:读ini配置文件 DWORD GetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LP ...
- VC操作INI文件 ,INI文件操作总结,如何操作INI文件,INI文件使用方法小结
INI文件简介 在我们写程序时,总有一些配置信息需要保存下来,以便在下一次启动程序完成初始化,这实际上是一种类持久化.将一些信息写入INI文件(initialization file)中,可完成简单的 ...
- MFC操作ini文件方法
转载:https://blog.csdn.net/rayborn1105/article/details/8192142 在我们的程序设计中经常需要对一些参数进行配置,配置好后还要在下一次启动仍然有效 ...
- 轻松实现一个操作ini文件的类
作者:lixiaosan(CSDN) 前言: 相信很多朋友在编写自己的程序中,都需要把一些数据先期导入到程序中进行初始化.那么这个时候,比较好的做法就是把你所有的数据写入一个ini文件,然后在程序去读 ...
- 在Windows mobile 5.0下操作INI文件
对于Windows mobile 5.0来说没有像window那样操作INI文件的API,所以只能自已来实现.其实操作INI文件就是操作普通的文本文件,只是要麻烦一些.以下是我实现的一些常用的操作的函 ...
- python中csv文件操作_python中操作csv文件
python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...
- VC++中操作XML(MFC、SDK)
VC++中操作XML(MFC.SDK) XML在Win32程序方面应该没有在Web方面应用得多,很多Win32程序也只是用XML来存存配置信息而已,而且没有足够的好处的话还不如用ini.VC++里操作 ...
最新文章
- centos6.6 Kickstart无人值守安装(一):原理篇
- 2009 Competition Highlights by ICPC Live
- linux系统源码安装教程,linux之源码包安装步骤
- 「每周CV论文推荐」 初学深度学习人脸关键点检测必读文章
- Java前景如何?现在还能学Java吗?
- CrtInvertedIdx
- 取出客户端卸载CKEditor中的内容,放入数据库中的方案
- 基础知识(七)opencv、python、人脸框检测
- HDU 4893 Wow! Such Sequence!(2014年多校联合 第三场 G)(线段树)
- 暴力删除文件(文件夹)之为所欲为
- V-Play入门手册3-如何编写高效的代码?
- 百度编辑器ueditor 的 submit 表单提交
- java极光推送demo_Java集成极光推送
- 计算机主机三维模型,三维模型
- 参考文献标引方式_参考文献标注方法有哪些 为什么要标注参考文献
- win10输入法看不见选字框_Win10更新后微软拼音输入法没有选字框怎么办?
- 游戏原画教程:角色设计中的几个基本图形的用法
- QT学习教程-(1)QT新建项目并打包hellow world
- 编写java百分制转化五分制_百分制与五分制的换算(百分制转换五分制公式)
- 局域网三大攻击工具的攻击原理及其防范
热门文章
- Oracle之同义词,DBLINK,表空间
- 点击按钮创建一个表格 点击按钮创建一个表格 权限选择 元素的value属性操作
- 泛微文档存放在服务器哪个地址,泛微OA根据文档的docid查询文档附件存放的路径...
- _Linux 的文件系统及文件缓存知识点整理
- C51_按键按下,流水灯亮起,数码管显示按下的次数
- ElasticSearch6.5.0 【安装IK分词器】
- macOS NSTableView
- cxgrid实现分组统计和添加Footer
- 偏见为什么是数据科学领域的一个大问题
- android单独刷入镜像