C++读写ini配置文件GetPrivateProfileString()&WritePrivateProfileString()
转载:
1.https://blog.csdn.net/fengbingchun/article/details/6075716
2.
转自:http://hi.baidu.com/andywangcn/blog/item/10ba730f48160eeb37d122e9.html
|
配置文件中经常用到ini文件,在VC中其函数分别为: #include <Windows.h> //wince,WMobile.ppc不支持这几个函数 写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName); 读取.ini文件:DWORD GetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefaut, LPSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName);函数返回值为string的长度(long型),而从ini文件获得的字符串则保留在目的缓冲器中 读取整形值:UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName); 其中个参数的意思: LPCTSTR lpAppName ------- INI文件中的一个字段名 LPCTSTR lpKeyName -------- lpAppName 下的一个键名,也就是里面具体的变量名 LPCTSTR lpDefaut ----------如果没有其前两个参数值,则将此值赋给变量 LPSTR lpReturnedString --------接收INI文件中的值的CString对象,即接收缓冲区 DWORD nSize ------接收缓冲区的大小 LPCTSTR lpFileName --------完整的INI文件路径名 LPCTSTR lpString ---------是键值,也就是变量的值, 必须为LPCTSTR或CString类型 例子: CString StrName,Strtemp; int nAge; StrName = "jacky"; nAge = 13; WritePrivateProfileString("Student","Name",StrName,"c://setting.ini"); 结果:(INI文件中显示如下:) [Student] Name=jacky 读取: CString str; GetPrivateProfileString( 结果:str = "jacky";这里需要注意点就是用完GetBuffer函数后一定要释放(用str.ReleaseBuffer()函数),不然后面再用到SName的其他子函数就会失灵。 3.读入整型值要用另一个WINAPI函数: nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c://stud//student.ini"); 在GetPrivateProfileString最后一个参数是配置文件路径的参数,此路径只能是绝对路径,不能是相对路径,但现在我需要是我的exe文件能和我的配置文件在一起。因此我使用了GetCurrentDirectory函数。 原代码如下: CString server_ip; 注意:在这里使用CString变量时,在使用完GetBuffer后,紧接着一定要使用ReleaseBuffer()函数,才可以进行其他的诸如字符串+操作 补充四点: 1.INI文件的路径必须完整,文件名前面的各级目录必须存在,否则写入不成功,该函数返回 FALSE 值. 2.文件名的路径中必须为 // ,因为在VC++中, // 才表示一个 / . 3.也可将INI文件放在程序所在目录,此时 lpFileName 参数为: ".//student.ini". 4.从网页中粘贴源代码时,最好先粘贴至记事本中,再往VC中粘贴,否则易造成编译错误,开始时我也十分不解,好好的代码怎么就不对呢?后来才找到这个方法.还有一些代码中使用了全角字符如:<,\等,也会 INI文件编程 INI文件在系统配置及应用程序参数保存与设置方面,具有很重要的作用,所以可视化的编程一族,如VB、VC、VFP、Delphi等都提供了读写INI文件的方法,其中Delphi中操作INI文件,最为简洁,这是因为Delphi3提供了一个TInifile类,使我们可以非常灵活的处理INI文件。 一、有必要了解INI文件的结构: 三、打开INI文件 myinifile:=Tinifile.create('program.ini'); 上面这一行语句将会为变量myinifile与具体的文件 program.ini建立联系,然后,就可以通过变量myinifile,来读写program.ini文件中的关键字的值了。值得注意的是,如果括号中的文件名没有指明路径的话,那么这个Program.ini文件会存储在Windows目录中,把Program.ini文件存储在应用程序当前目录中的方法是:为其指定完整的路径及文件名。下面的两条语句可以完成这个功能: Filename:=ExtractFilePath(Paramstr(0))+'program.ini'; myinifile:=Tinifile.Create(filename); 四、读取关键字的值 vs:=myinifile.Readstring('小节名','关键字',缺省值); 其中缺省值为该INI文件不存在该关键字时返回的缺省值。 五、写入INI文件 myinifile.writestring('小节名','关键字',变量或字符串值); 七、小节操作 八、释放 type implementation procedure TForm1.FormCreate(Sender: TObject); procedure TForm1.FormDestroy(Sender: TObject); myinifile.writeinteger('程序参数','已运行时间',strtoint(edit2.text)); procedure TForm1.Timer1Timer(Sender: TObject); end. |
C++读写ini配置文件GetPrivateProfileString()&WritePrivateProfileString()的更多相关文章
- C# 读写 ini 配置文件
虽说 XML 文件越发流行,但精简的 ini 配置文件还是经常会用到,在此留个脚印. 当然,文中只是调用系统API,不会报错,如有必要,也可以直接以流形式读取 ini文件并解析. /// <su ...
- [转]VB 读写ini 配置文件
转自 百度知道 C# 读写 ini配置文件 点此链接 'API 声明Public Declare Function GetPrivateProfileString Lib "kernel32 ...
- 引用“kernel32”读写ini配置文件
引用"kernel32"读写ini配置文件 unity ini kernel32 配置文件 引用"kernel32"读写ini配置文件 OverView ke ...
- C# 文件的一些基本操作(转)//用C#读写ini配置文件
C# 文件的一些基本操作 2009-07-19 来自:博客园 字体大小:[大 中 小] 摘要:介绍C#对文件的一些基本操作,读写等. using System;using System.IO;us ...
- C#操作读写INI配置文件
一个完整的INI文件格式由节(section).键(key).值(value)组成.示例如:[section]key1=value1key2=value2; 备注:value的值不要太长,理论上最多不 ...
- 自己写的 读写 ini 配置文件类
/// <summary> /// 不调用系统API 读写 ini 配置文件 /// </summary> public class RW_ini { #region ==== ...
- WritePrivateProfileString等读写.ini配置文件
配置文件中经常用到ini文件,在VC中其函数分别为: 写入.ini文件: BOOL WritePrivateProfileString( LPCTSTR lpAppName, // INI文件中的一个 ...
- 使用C#读写ini配置文件
INI就是扩展名为"INI"的文件,其实他本身是个文本文件,可以用记事本打工,主要存放的是用户所做的选择或系统的各种参数. INI文件其实并不是普通的文本文件.它有自己的结构.由若 ...
- VC++读写*.ini配置文件
ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息.ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Ke ...
随机推荐
- 使用开源文档工具docsify,用写博客的姿势写文档
前提 下面的简介摘抄自docsify的官网 https://docsify.js.org 中的简介 docsify是一个神奇的文档网站生成器.他可以快速帮你生成文档网站.不同于GitBook.Hexo ...
- Fitness - 07.23 - Congratulation!
倒计时161天 运动54分钟,共计5组半,5.8公里.拉伸5分钟. 每组跑步10分钟(6.5KM/h),走路1分钟(5.5KM/h). 终于突破了耐力跑的一天,可喜可贺! 差一点就到6公里了,觉得自己 ...
- 【Webpack】NodeJS + Webpack
目的:想要通过npm命令按照我们的规则生成静态资源(webpack4以后还能做到很多性能优化的配置,我所知道的只有css.js分包,以达到资源快速加载快速呈现的效果). 一.安装webpack npm ...
- Spring Cloud:Consul基础知识
一.基本概念 Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go开发. 它提供微服务系统中的服务治理.配置中心.控制总线等功能. 服务发现:提供HTTP和DNS两种发 ...
- 解决ORA-00257无法删除用户
今日早晨在客户反馈不能登陆系统了,查看oracle日志.发现如下错误ORA-00257: archiver error. Connect internal only, until freed.该错误是 ...
- 一键部署k8s
本人学习安装kubernetes时,顺便整理了安装脚本,可以通过执行一个脚本,自动二进制安装好1台master+2台node的k8环境.方便需要学习k8s的同学. 百度网盘:https://pan.b ...
- 08_线程间通信 ITC
1.线程间的通信方式 1.共享全局变量 2.线程队列(queue) 3.信号量(Semaphore) 2.共享全局变量进行通信 from threading import Thread import ...
- Spring security OAuth2.0认证授权学习第三天(认证流程)
本来之前打算把第三天写基于Session认证授权的,但是后来视屏看完后感觉意义不大,而且内容简单,就不单独写成文章了; 简单说一下吧,就是通过Servlet的SessionApi 通过实现拦截器的前置 ...
- MyEclipse web项目连接数据库
1.Build path添加jdbc驱动包 2.编写驱动类 import java.sql.Connection; import java.sql.DriverManager; import java ...
- C:获取屏幕输入
代码: #include "stdafx.h" #include "stdio.h" int _tmain(int argc, _TCHAR* argv[]) ...