问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

WritePrivateProfileString函数在VC中的使用

提问网友 发布时间:2025-01-14 18:37
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
1个回答
热心网友 回答时间:2025-01-14 18:56


在程序开发中,我们经常需要将一些配置信息保存下来,以确保程序的功能得到实现。一种简单且常用的方法就是将这些信息写入.INI文件中,在程序初始化时再读入这些信息。本文将详细介绍如何使用WritePrivateProfileString函数在Visual C++(VC)环境中完成这一过程。



WritePrivateProfileString函数的原型如下:

BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
);

此函数的参数如下:



lpAppName:这是.INI文件中的一个字段名。


lpKeyName:是lpAppName下的一个键名,相当于变量名。


lpString:是键值,即变量的值,要求必须为LPCTSTR型或CString型。


lpFileName:是完整的.INI文件名。



以下是一个具体的使用示例。假设我们想要将一个学生的信息(姓名和年龄)保存在名为"c:\stud\student.ini"的文件中。我们首先创建一个学生对象,并将姓名和年龄赋值给它。



代码如下:

CString strName, strTemp;
int nAge;
strName = "张三";
nAge = 12;
::WritePrivateProfileString("StudentInfo", "Name", strName, "c:\\stud\\student.ini");

执行后,"c:\stud\student.ini"文件的内容将如下所示:

[StudentInfo]
Name=张三


若要保存学生的年龄信息,只需将整型的值转换为字符型即可:

strTemp.Format("%d", nAge);
::WritePrivateProfileString("StudentInfo", "Age", strTemp, "c:\\stud\\student.ini");



接下来,我们将讨论如何从.INI文件中读取程序中的变量。



所用的函数原型为:

DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);

参数说明如下:



lpAppName 和 lpKeyName 与 WritePrivateProfileString 函数相同。


lpDefault:如果.INI文件中没有指定的字段名或键名,则将此值赋给变量。


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


nSize:目的缓存器的大小。


lpFileName:是完整的.INI文件名。



以下是一个具体的读取示例。假设我们想要从之前写入的学生信息中读取姓名和年龄。



代码如下:

CString strStudName;
int nStudAge;
GetPrivateProfileString("StudentInfo", "Name", "默认姓名", strStudName.GetBuffer(MAX_PATH), MAX_PATH, "c:\\stud\\student.ini");

执行后,strStudName的值为:"张三"。如果前两个参数有误,其值将为:"默认姓名"。



注意:如果读取的.ini文件不存在,则会按默认值生成相应的.ini文件。



若要读取整型值,可以使用以下函数:

UINT GetPrivateProfileInt(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
INT nDefault,
LPCTSTR lpFileName
);

参数意义与上述函数相同。具体使用方法如下:

nStudAge = GetPrivateProfileInt("StudentInfo", "Age", 10, "c:\\stud\\student.ini");



接下来,我们将探讨如何循环写入多个值。假设我们需要将最近使用的几个文件名保存下来,以下是一个具体的程序实现:




写入:

CString strTemp, strTempA;
int i;
int nCount = 6;
文件://共有6个文件名需要保存
for (i = 0; i < nCount; i++) {
strTemp.Format("%d", i);
strTempA = 文件名;
文件://文件名可以从数组、列表框等处获取。
::WritePrivateProfileString("UseFileName", "FileName" + strTemp, strTempA, "c:\\usefile\\usefile.ini");
}
strTemp.Format("%d", nCount);
::WritePrivateProfileString("FileCount", "Count", strTemp, "c:\\usefile\\usefile.ini");
文件://将文件总数写入,以便读出。



读出:

nCount = ::GetPrivateProfileInt("FileCount", "Count", 0, "c:\\usefile\\usefile.ini");
for (i = 0; i < nCount; i++) {
strTemp.Format("%d", i);
strTemp = "FileName" + strTemp;
::GetPrivateProfileString("CurrentIni", strTemp, "default.fil", strTempA.GetBuffer(MAX_PATH), MAX_PATH, "c:\\usefile\\usefile.ini");
文件://使用strTempA中的内容。
}




通过以上步骤,我们不仅了解了如何在VC环境中使用WritePrivateProfileString函数保存和读取配置信息,还学会了如何循环写入多个值,以满足不同场景的需求。这种做法有助于简化程序设计,提高程序的可维护性和可扩展性。


扩展资料

WritePrivateProfileString函数名称,多用于VB、VC中使用,函数声明:Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

怎样用VC++写个能读写配置文件的程序? 简单写ini配置文件的方式(备份) 发布新闻稿哪些平台比较靠谱? - 知乎 日语翻译 期待与贵社的合作! \我们期待贵社的好消息! ...工厂多吗,干净不累的工厂,谁知道烟台富士康怎么样介绍一下全面,烟台... 我想知道烟台富士康的待遇怎样以及工作的环境如何 烟台富士康待遇怎么样 烟台富士康怎么样啊 低钠盐和普通盐的区别在哪里 低钠盐和普通盐哪个更好 雷柏8130无线键鼠要驱动吗? 在淘宝网买的了雷柏8130无线键鼠套装刚用两天键盘一起正常鼠标不动了... 雷柏8130+无线键鼠套装卖多少钱? 雷柏8130+无线键鼠套装的性价比高吗? 我要往日本寄送东西,地址要写日语还是汉语啊 如何通过EMS邮寄东西到日本地址需要日文吗 庞振坤电视资料:《混世奇才庞振坤》 混世奇才庞振坤演员表 峰林晓镇民宿推荐 vivo手机主动分屏怎么操作呢 输液椅的安装方法 点子商务专业的学生毕业之后可从事哪些工作 为了使销售额总金额不变,销售量要比原价销售时增加百分之几? ...月多卖出20件,这个月销售量比上个月增加百分之几 ...比去年增加135台 今年销售量比去年增加了百分之几 ...为了使促销总金额不变,销售量要比按原价销售时增加百分之几... 苹果通讯录怎么导入新手机iPhone用户换机必备技能 笔记本插上碰线的usb会烧主板嘛 研究生报名时 "吕"的拼音 怎么填?急!急!需要权威的答案! ...不过护照里是写成LU的,那么我定国际航班的时候填LU可以么?_百度知 ... 有没有一款适合情侣玩的网游? 台式电脑拆电源怎么给台式机电脑更换电源 集体可以进行协商的内容有哪些? 如何促进普通高等学校人才培养模式的改革与创新面临问题呢? 寒门难出贵子是什么意思 淘宝农场红包10元怎么用 芭芭农场10元红包使用规则 LV有哪些鞋子比较受欢迎? 路易威登有哪些女式运动鞋值得入手? LV有哪些款式的休闲鞋值得入手? 绝对地址相对地址与绝对地址
Top