MFC写入.ini文件的策略
在使用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文件:
- BOOL WritePrivateProfileString(
- LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名
- LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名
- LPCTSTR lpString, // 键值,也就是数据
- LPCTSTR lpFileName // INI文件的路径
- );
BOOL WritePrivateProfileString(
LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名 LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名 LPCTSTR lpString, // 键值,也就是数据 LPCTSTR lpFileName // INI文件的路径
);
读取.ini文件:
- DWORD GetPrivateProfileString(
- LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名
- LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名
- LPCTSTR lpDefault, // 如果lpReturnedString为空,则把个变量赋给lpReturnedString
- LPTSTR lpReturnedString, // 存放键值的指针变量,用于接收INI文件中键值(数据)的接收缓冲区
- DWORD nSize, // lpReturnedString的缓冲区大小
- LPCTSTR lpFileName // INI文件的路径
- );
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名 LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名 LPCTSTR lpDefault, // 如果lpReturnedString为空,则把个变量赋给lpReturnedString LPTSTR lpReturnedString, // 存放键值的指针变量,用于接收INI文件中键值(数据)的接收缓冲区 DWORD nSize, // lpReturnedString的缓冲区大小 LPCTSTR lpFileName // INI文件的路径
);
读取整形值:(返回值为读到的整)
- UINT GetPrivateProfileInt(
- LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名
- LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名
- INT nDefault, // 如果没有找到指定的数据返回,则把个变量值赋给返回值
- LPCTSTR lpFileName // INI文件的路径
- );
UINT GetPrivateProfileInt(
LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名
LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名
INT nDefault, // 如果没有找到指定的数据返回,则把个变量值赋给返回值 LPCTSTR lpFileName // INI文件的路径 );
读写INI文件时相对路径和绝对路径都可以,根据实际情况选择
"..\\IniFileName.ini" // 这样的为相对路径
"D:\\IniFileName.ini" // 这样的为绝对路径
MAX_PATH:是微软最大路径占的字节所设的宏
例子:
写INI文件:
- LPTSTR lpPath = new char[MAX_PATH];
- strcpy(lpPath, "D:\\IniFileName.ini");
- WritePrivateProfileString("LiMing", "Sex", "Man", lpPath);
- WritePrivateProfileString("LiMing", "Age", "20", lpPath);
- WritePrivateProfileString("Fangfang", "Sex", "Woman", lpPath);
- WritePrivateProfileString("Fangfang", "Age", "21", lpPath);
- delete [] lpPath;
- INI文件如下:
- [LiMing]
- Sex=Man
- Age=20
- [Fangfang]
- Sex=Woman
- Age=21
- 读INI文件:
- LPTSTR lpPath = new char[MAX_PATH];
- LPTSTR LiMingSex = new char[6];
- int LiMingAge;
- LPTSTR FangfangSex = new char[6];
- int FangfangAge;
- strcpy(lpPath, "..\\IniFileName.ini");
- GetPrivateProfileString("LiMing", "Sex", "", LiMingSex, 6, lpPath);
- LiMingAge = GetPrivateProfileInt("LiMing", "Age", 0, lpPath);
- GetPrivateProfileString("Fangfang", "Sex", "", FangfangSex, 6, lpPath);
- FangfangAge = GetPrivateProfileInt("Fangfang", "Age", 0, lpPath);
- delete [] lpPath;
MFC写入.ini文件的策略的更多相关文章
- 【WPS】表格使用VBA宏编程写入ini文件实现软件多语言
前言:公司软件最近在做多语言版本,而又来一个西班牙文版本的,之前已经做过中文版本,英文版本和法文版本,之前是同事做的,现在安排我做,之前的做法,使用wps表格,翻译好,然后一个一个复制粘贴到ini文件 ...
- 用C#读取,写入ini文件
[DllImport("kernel32.dll")] private static extern bool WritePrivateProfileString(string se ...
- C语言实现<读取>和<写入> *.ini文件(转)
原地址:https://blog.csdn.net/niha1993825jian/article/details/41086403 #include <stdio.h> #include ...
- C语言实现 读取写入ini文件实现(转)
#include <stdio.h> #include <string.h> /* * 函数名: GetIniKeyString * 入口参数: title * 配置文件中一组 ...
- INI文件的写入与读取
INI文件的写入与读取 [节名] '[]中的节名对应此API的第一参数 Name=内容 'Nmae对应此API的第二参数 API的第三参数是没有取到匹配内容时返回的字符串; ...
- MFC读写配置ini文件
https://blog.csdn.net/naibozhuan3744/article/details/78783446 https://blog.csdn.net/rayborn1105/arti ...
- 配置信息写入到.ini文件中的方法
在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中 1.所用的WINAP ...
- 91.生成ini文件并写入和读取ini文件
写入 WritePrivateProfileStringA("hello money", infx[i].name, money, "1.ini"); 按照字符 ...
- C# 创建INI文件,写入并可读取。----转载
基于C#winform设计. 首先创建一个类,我命名为IniFiles.并引入命名空间using System.Runtime.InteropServices; 接着,声明API函数 [DllImpo ...
随机推荐
- Laravel框架学习(Response)
1.Response篇 1.1 基本响应 最基本的HTTP响应只需在路由闭包或控制器动作中返回一个简单字符串即可,但是具体业务逻辑中大部分响应都是在控制器动作中返回Response实例或者视图.Res ...
- wpf 帧动画
帧动画实现很简单 <ImageBrush x:Key="speed_s" Stretch="Fill" ImageSource="/images ...
- 491. Palindrome Number【easy】
Check a positive number is a palindrome or not. A palindrome number is that if you reverse the whole ...
- linux 从百度网盘下载文件的方法
linux 从百度网盘下载文件的方法 发表于2015 年 月 日由shenwang 方法1.wget wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括 ...
- 安全DNS
国内首家云安全DNS:(114DNS)114.114.114.114114.114.115.115 将 DNS 地址设为114.114.114.119 和 114.114.115.119 ,拦截钓鱼病 ...
- 利用RPM和YUM安装软件
安装软件事root的事,所以必须要以root身份登录! 假设我要安装一个文件名为rp-pppoe-3.5-32.1.i386.rpm的文件, 那么我们可以这样: rpm安装软件 rpm -ivh pa ...
- ARP-Address Resolution Protocol-地址解析协议
主要内容摘自:图解TCP/IP ARP是一种解决地址问题的协议.以目标IP地址为线索,用来定位下一个应该接受数据分包的网络设备的mac地址. 如果目标主机不在同一个链路上时,可以通过ARP查找下一跳路 ...
- [转]wordpress安装插件的3种方式
WordPress插件安装方法有几种?WordPress是一种使用PHP语言开发的博客平台,有些用户不知道怎么安装WordPress插件和主题的,所以今天小编就为大家介绍几种WordPress插件安装 ...
- beautifulSoup安装
Python2.7 + beautifulSoup 4.4.1 安装配置 原创 2016年05月09日 10:20:30 标签: python 1261 1. 前言 最近研究python 的爬虫功能, ...
- Redmin 一键安装
一.介绍 Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据库,有不少自己独特的功能,例如提供 ...