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 ...
随机推荐
- Lintcode---二叉树的层次遍历(原型)
给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 您在真实的面试中是否遇到过这个题? Yes 样例 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 ...
- .Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)
过去几年都在忙着找项目,赶项目,没有时间好好整理深究自己在工作中学到的东西.现在好了,趁着找工作的这段空余时间,正好可以总结和再继续夯实自己的.Net, C#基本功.在05年的时候,Scott Han ...
- unity, access standard shared emission by script
unity 5.1.1f1 personal 用下面方法在脚本中设置standard shader的emssion: gameObject.GetComponent<MeshRenderer&g ...
- 查询MySql数据库架构信息:数据库,表,表字段
/*1.查询所有数据库*/ show databases; /*2.查询所有数据表*/ select * from information_schema.tables where table_sch ...
- 点滴积累【JS】---JS小功能(offsetLeft实现图片滚动效果)
效果: 代码: <head runat="server"> <title></title> <style type="text/ ...
- C# asp.net页面常用语法,页面包含
搞.net开发这么多年,知道和用过包含include指令吗? <%@ Page Language="C#" AutoEventWireup="true" ...
- zooKeeper_《ZooKeeper官方指南》一致性保障
转 http://ifeve.com/zookeeper-consistency-guarantees/ 本文翻译自<ZooKeeper官方指南>,译者:追云,校对:追云 一致性保障 Zo ...
- iOS开发多线程篇 05 —GCD介绍
iOS开发多线程篇—GCD介绍 一.简单介绍 1.什么是GCD? 全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 纯C语言,提供了非常多强大的函数 2.GCD的优势 G ...
- 谈一谈APP版本号问题
如题:谈一谈APP版本号问题 为什么要谈这个问题,周五晚上11~12点,被微信点名,说APP有错,无效的版本号,商城无法下单.我正在准备收拾东西,周末回老家,结果看到这样问题,菊花一紧.我擦,我刚加的 ...
- 对java中hashmap深入理解
1.HashMap的结构是怎样的? 二维结构,第一维是数组,第二维是链表 2.Get方法的流程是怎样的? 先调用Key的hashcode方法拿到对象的hash值,然后用hash值对第一维数组的长度进行 ...