在使用WritePrivateProfileString的时候, 
如果前两个参数已经在INI文件中存在,那该函数的作用就是修改键值,即楼主说的覆盖 
如果第一个参数存在,第二个参数不存在,那作用是在INI中的一个字段(第一个参数)下新增一个键名(第二个参数),键值为第三个参数 
如果第一个参数也不存在,那作用是在INI中新增一个字段名(第一个参数),该字段下新增一个键名(第二个参数),键值为第三个参数

//下面是在网上找的一个简单的介绍,比较容易看懂 
BOOL WritePrivateProfileString( 
LPCTSTR lpAppName, 
LPCTSTR lpKeyName, 
LPCTSTR lpString, 
LPCTSTR lpFileName 
);

其中各参数的意义: 
LPCTSTR lpAppName 是INI文件中的一个字段名. 
LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名. 
LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的. 
LPCTSTR lpFileName 是完整的INI文件名.

具体使用方法:设现有一名学生,需把他的姓名写入 c:\stud\student.ini 文件中.

C/C++ code
CString strName;strName="张三";::WritePrivateProfileString("StudentInfo","Name",strName,"c:\\stud\\student.ini"); //此时c:\stud\student.ini文件中的内容如下://[StudentInfo]//  Name=张三

要是之前某个(Section,Key)对就已经有值了还不想覆盖原有的值而是追加该怎么做呢?可以先把原信息读出来,再和当前的合并(策略随便比如用逗号或者冒号分割)然后再存回就可以了。

配置文件中经常用到ini文件,在VC中其函数分别为: 写入.ini文件:

  1. BOOL WritePrivateProfileString(
  2. LPCTSTR lpAppName,  // INI文件中的一个字段名[节名]可以有很多个节名
  3. LPCTSTR lpKeyName,  // lpAppName 下的一个键名,也就是里面具体的变量名
  4. LPCTSTR lpString,   // 键值,也就是数据
  5. LPCTSTR lpFileName  // INI文件的路径
  6. );
BOOL WritePrivateProfileString(
LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名 LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名 LPCTSTR lpString, // 键值,也就是数据 LPCTSTR lpFileName // INI文件的路径
);

读取.ini文件:

  1. DWORD GetPrivateProfileString(
  2. LPCTSTR lpAppName,        // INI文件中的一个字段名[节名]可以有很多个节名
  3. LPCTSTR lpKeyName,        // lpAppName 下的一个键名,也就是里面具体的变量名
  4. LPCTSTR lpDefault,        // 如果lpReturnedString为空,则把个变量赋给lpReturnedString
  5. LPTSTR lpReturnedString,  // 存放键值的指针变量,用于接收INI文件中键值(数据)的接收缓冲区
  6. DWORD nSize,            // lpReturnedString的缓冲区大小
  7. LPCTSTR lpFileName        // INI文件的路径
  8. );
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名 LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名 LPCTSTR lpDefault, // 如果lpReturnedString为空,则把个变量赋给lpReturnedString LPTSTR lpReturnedString, // 存放键值的指针变量,用于接收INI文件中键值(数据)的接收缓冲区 DWORD nSize, // lpReturnedString的缓冲区大小 LPCTSTR lpFileName // INI文件的路径
);

读取整形值:(返回值为读到的整)

  1. UINT GetPrivateProfileInt(
  2. LPCTSTR lpAppName,  // INI文件中的一个字段名[节名]可以有很多个节名
  3. LPCTSTR lpKeyName,  // lpAppName 下的一个键名,也就是里面具体的变量名
  4. INT nDefault,       // 如果没有找到指定的数据返回,则把个变量值赋给返回值
  5. LPCTSTR lpFileName  // INI文件的路径
  6. );
UINT GetPrivateProfileInt(
LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名
LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名
INT nDefault, // 如果没有找到指定的数据返回,则把个变量值赋给返回值 LPCTSTR lpFileName // INI文件的路径 );

读写INI文件时相对路径和绝对路径都可以,根据实际情况选择

"..\\IniFileName.ini"    // 这样的为相对路径

"D:\\IniFileName.ini"    // 这样的为绝对路径

MAX_PATH:是微软最大路径占的字节所设的宏

例子:

写INI文件:

  1. LPTSTR lpPath = new char[MAX_PATH];
  2. strcpy(lpPath, "D:\\IniFileName.ini");
  3. WritePrivateProfileString("LiMing", "Sex", "Man", lpPath);
  4. WritePrivateProfileString("LiMing", "Age", "20", lpPath);
  5. WritePrivateProfileString("Fangfang", "Sex", "Woman", lpPath);
  6. WritePrivateProfileString("Fangfang", "Age", "21", lpPath);
  7. delete [] lpPath;
  8. INI文件如下:
  9. [LiMing]
  10. Sex=Man
  11. Age=20
  12. [Fangfang]
  13. Sex=Woman
  14. Age=21
  15. 读INI文件:
  16. LPTSTR lpPath = new char[MAX_PATH];
  17. LPTSTR LiMingSex = new char[6];
  18. int LiMingAge;
  19. LPTSTR FangfangSex = new char[6];
  20. int FangfangAge;
  21. strcpy(lpPath, "..\\IniFileName.ini");
  22. GetPrivateProfileString("LiMing", "Sex", "", LiMingSex, 6, lpPath);
  23. LiMingAge = GetPrivateProfileInt("LiMing", "Age", 0, lpPath);
  24. GetPrivateProfileString("Fangfang", "Sex", "", FangfangSex, 6, lpPath);
  25. FangfangAge = GetPrivateProfileInt("Fangfang", "Age", 0, lpPath);
  26. delete [] lpPath;

MFC写入.ini文件的策略的更多相关文章

  1. 【WPS】表格使用VBA宏编程写入ini文件实现软件多语言

    前言:公司软件最近在做多语言版本,而又来一个西班牙文版本的,之前已经做过中文版本,英文版本和法文版本,之前是同事做的,现在安排我做,之前的做法,使用wps表格,翻译好,然后一个一个复制粘贴到ini文件 ...

  2. 用C#读取,写入ini文件

    [DllImport("kernel32.dll")] private static extern bool WritePrivateProfileString(string se ...

  3. C语言实现<读取>和<写入> *.ini文件(转)

    原地址:https://blog.csdn.net/niha1993825jian/article/details/41086403 #include <stdio.h> #include ...

  4. C语言实现 读取写入ini文件实现(转)

    #include <stdio.h> #include <string.h> /* * 函数名: GetIniKeyString * 入口参数: title * 配置文件中一组 ...

  5. INI文件的写入与读取

    INI文件的写入与读取 [节名]         '[]中的节名对应此API的第一参数 Name=内容      'Nmae对应此API的第二参数 API的第三参数是没有取到匹配内容时返回的字符串; ...

  6. MFC读写配置ini文件

    https://blog.csdn.net/naibozhuan3744/article/details/78783446 https://blog.csdn.net/rayborn1105/arti ...

  7. 配置信息写入到.ini文件中的方法

    在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中 1.所用的WINAP ...

  8. 91.生成ini文件并写入和读取ini文件

    写入 WritePrivateProfileStringA("hello money", infx[i].name, money, "1.ini"); 按照字符 ...

  9. C# 创建INI文件,写入并可读取。----转载

    基于C#winform设计. 首先创建一个类,我命名为IniFiles.并引入命名空间using System.Runtime.InteropServices; 接着,声明API函数 [DllImpo ...

随机推荐

  1. 两DD-WRT组建WDS设置

    今天把买了非常久的两台CISCO(已刷DD-WRT)路由器组成WDS,參考了三篇文章   DD-WRT v24-sp2的WDS中继设置 http://www.cnblogs.com/zjoch/arc ...

  2. Jetty - Handler源码分析

    1. 描述 基于Jetty-9.4.8.v20171121. Handler是Jetty服务处理器,用户Server处理HTTP请求. Handler可以做如下处理: (1)完全生成HTTP响应: ( ...

  3. 已安装 SQL Server 2005 Express 工具。若要继续,请删除 SQL Server 2005 Express 工具

    数据库安装sql server2008R2时遇到. 安装sql server 2008 management,提示错误:Sql2005SsmsExpressFacet 检查是否安装了 SQL Serv ...

  4. Python内置函数之repr()

    repr(object) 返回对象的字符串形式. >>> a = 'hello' >>> repr(a) "'hello'" 返回的字符串形式可 ...

  5. java虚拟机的逃逸分析

    逃逸分析作为其他优化手段提供依据的分析技术,其基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用,例如作为调用参数传递到其他方法中,称为方法逃逸.甚至还有可能被外部线程 ...

  6. (译)Getting Started——1.1.2 Basic(基础)

    本节教程会带你浏览创建简单的用户界面.添加自定义行为的整个过程.完成本节教程后,你创建的应用就可以运行在iPhone和iPad上了. 本节教程会教给你如下技能: 1. 使用Xcode创建和管理项目 2 ...

  7. Oh my God, 连jQuery都放弃IE了!

    jQuery 2.0在经过10个月的开发后发布.jQuery 2.0是为现代Web浏览器定制的,也考虑了移动设备.但一个重大变化是jQuery 2.0将不兼容旧版IE,其大小比版本1.9.1低10%. ...

  8. The.first.glance.at.linux.commands

    ## Get Ubuntu Version Info lsb_release -a ## Get Linux kernal info uname -a ## Get Computer name ech ...

  9. ios 怎样将不支持ARC的文件设为支持ARC的--JSON

    怎样将不支持ARC的文件设为支持ARC的 双击须要改动的文件加上一句话就可以 -fno-objc-arc

  10. java io类图(转)

    转载:http://blog.csdn.net/fenglian521/article/details/1324010 Java IO 的类图 拿出来方便大家.Java IO表面上看起来比较乱,有了类 ...