MFC读写ini配置文件(WritePrivateProfileString,GetPrivateProfileString,GetPrivateProfileInt)

本博文主要总结用MFC配置ini文件的用法,全文分为三大部门。第一部分介绍三个核心函数功能和各个参数意义。第二部分给出一个应用实例的详细注释代码。第三部分给出了程序编译执行后的结果。

一、WritePrivateProfileString函数和GetPrivateProfileString函数功能和各个参数详细分析。

用MFC配置ini文件的核心函数有三个,分别为WritePrivateProfileString和GetPrivateProfileString和GetPrivateProfileInt。下面分别讲解这三个核心函数的功能和各个参数的意义。

1.1 WritePrivateProfileString函数

1.1.1函数功能:

将lpString(CString型)变量存入lpFileName(Cfg.ini)文件里面,按照lpAppName字段进行分类索引。

1.1.2各个参数详解:

BOOL WritePrivateProfileString(

   LPCTSTRlpAppName,

   LPCTSTRlpKeyName,

   LPCTSTRlpString,

   LPCTSTRlpFileName

   );

//其中各参数的意义:

LPCTSTR lpAppName; //是INI文件中的一个字段名.

LPCTSTR lpKeyName;//是lpAppName下的一个键名,通俗讲就是变量名.

LPCTSTR lpString; //是键值, 也就是变量的值,不过必须为LPCTSTR型或CString型的.

LPCTSTR lpFileName;//是完整的INI文件名.

1.1.3调用

WritePrivateProfileString(“StudentInfo1”,“身份证”,“44022520070001”,".\ConfigFile\ConfigInit.ini");

1.2 GetPrivateProfileString函数

1.2.1函数功能:

将lpFileName(Cfg.ini)文件里面的lpKeyName (CString型)变量的值取出,存入lpReturnedString缓冲区(也是CString类型),按照lpAppName字段进行分类索引。

1.2.2各个参数详解:

DWORD GetPrivateProfileString(

   LPCTSTRlpAppName,

   LPCTSTRlpKeyName,

   LPCTSTRlpDefault,

   LPTSTRlpReturnedString,

   DWORDnSize,

   LPCTSTRlpFileName

   );

//其中各参数的意义:

//前二个参数与 WritePrivateProfileString中的意义一样.

lpAppName; //是INI文件中的一个字段名.

lpKeyName;// 是lpAppName下的一个键名,通俗讲就是变量名.

lpDefault;// : 如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量.

lpReturnedString;// : 接收INI文件中的值的CString对象,即目的缓存器.

nSize;// : 目的缓存器的大小.

lpFileName;// : 是完整的INI文件名.

1.2.3调用

GetPrivateProfileString(“StudentInfo1”,“Name”,“赵钱孙”, strName.GetBuffer(MAX_PATH),MAX_PATH,".\ConfigFile\ConfigInit.ini");

1.3 GetPrivateProfileInt函数

1.3.1函数功能:

将lpFileName(Cfg.ini)文件里面的lpKeyName (CString型)变量的值取出,存入lpReturnedString缓冲区(也是CString类型),按照lpAppName字段进行分类索引。

1.3.2各个参数详解:

UINT GetPrivateProfileInt(

   LPCTSTRlpAppName,

   LPCTSTRlpKeyName,

   INTnDefault,

   LPCTSTRlpFileName

   );//其中各参数的意义:

//前二个参数与 WritePrivateProfileString中的意义一样.

LPCTSTR lpAppName; //是INI文件中的一个字段名.

LPCTSTR lpKeyName;//是lpAppName下的一个键名,通俗讲就是变量名.

INT nDefault; //如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量.

LPCTSTR lpFileName;//是完整的INI文件名.

1.3.3调用

GetPrivateProfileInt(“StudentInfo2”,“Age”, 1,".\ConfigFile\ConfigInit.ini");

二、调用实例

2.1创建一个MFC基本对话框工程,在对话框界面添加一个按钮函数,将按钮命名为【配置文件】,如下图所示:

在这里插入图片描述

图2.1

2.2双击【配置文件】按钮,在按钮事件处理函数OnBnClickedButtonConfig()中,添加如下代码(可直接复制粘贴)

//"StudentInfo1"表示字段 "身份证"表示字段中的成员变量 "44022520070309"表示"身份证"节点中的变量值 ".\ConfigFile\ConfigInit.ini"表示ini文件的存储目录

   //ini文件可用txt文本打开,打开后的前几行内容如下:

   //[StudentInfo]

   //Name = 李四

   //Age = 18

   //身份证 = 44022520070309

   //[StudentInfo1]

   //Name = 李四

   //Age = 18

   //身份证 = 44022520070309

   //注意:写入ini文件的内容,在同一个字段内,不能有相同的内容排列 比如[StudentInfo]字段下,"Name =李四"只有一个,要想跟"Name =张三"并存,就必须另开一个段或者用序号作为排列。如果是直接"Name =张三",则"Name =李四"会被覆盖,结果是只有"Name =张三"这个Name变量。

   DeleteFile(".\\ConfigFile\\ConfigInit.ini");//删除"ConfigInit.ini"配置文件,然后下面的函数再创建一个新的,进行ConfigInit.ini文件的初始化

   BOOLResult1 = WritePrivateProfileString("StudentInfo1","身份证","44022520070001",".\\ConfigFile\\ConfigInit.ini");

   BOOLResult2 = WritePrivateProfileString("StudentInfo1","Name","张三",".\\ConfigFile\\ConfigInit.ini");

   BOOLResult3 = WritePrivateProfileString("StudentInfo1","Age","25",".\\ConfigFile\\ConfigInit.ini");



   BOOLResult4 = WritePrivateProfileString("StudentInfo2","身份证","44022520070002",".\\ConfigFile\\ConfigInit.ini");

   BOOLResult5 = WritePrivateProfileString("StudentInfo2","Name","李四",".\\ConfigFile\\ConfigInit.ini");

   BOOLResult6 = WritePrivateProfileString("StudentInfo2","Age","28",".\\ConfigFile\\ConfigInit.ini");

  

   if(Result1&&Result2&&Result3)

   {

          //AfxMessageBox(_T("配置信息写入成功!"));

   }



   //读取ini配置文件中的信息,读CString变量

   //"StudentInfo1"表示字段  "Age"表示字段中的成员变量  "赵钱孙"表示字段成员变量默认值,前提是前两个信息不存在  strName.GetBuffer(MAX_PATH)表示缓冲区,存储CString内容  MAX_PATH表示缓冲区最大存储空间 ".\\ConfigFile\\ConfigInit.ini"表示存储目录

   //程序执行后,strName中的值为"张三"

   CStringstrName;

   GetPrivateProfileString("StudentInfo1","Name","赵钱孙", strName.GetBuffer(MAX_PATH),MAX_PATH,".\\ConfigFile\\ConfigInit.ini");



   //读取ini配置文件中的信息,读int变量

   intResult = GetPrivateProfileInt("StudentInfo2","Age", 1,".\\ConfigFile\\ConfigInit.ini");

三、程序编译和执行后的结果,如下图所示:

在这里插入图片描述

图3.1 自动生成一个ConfigInit.ini文件

在这里插入图片描述

图3.2 写入ini文件的内容

在这里插入图片描述

图3.3 从ini文件读出的内容

图3.3中的结果可以从图3.2中可以看出,strName读取字段"StudentInfo1"中变量 “Name"的值为"张三”,Result读取字段"StudentInfo2"中变量 "Age"的值为28。

参考内容:

http://blog.csdn.net/aaronalan/article/details/6144393

http://bbs.csdn.net/topics/30394456

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

myx1027

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值