VC编程之VC中读写ini文件(转)
小标 2019-04-26 来源 : 阅读 1015 评论 0

摘要:本文主要向大家介绍了VC编程之VC中读写ini文件(转),通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

本文主要向大家介绍了VC编程之VC中读写ini文件(转),通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

VC编程之VC中读写ini文件(转)

我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下:  
一.将信息写入.INI文件中.   
1.所用的WINAPI函数原型为:    
BOOL WritePrivateProfileString(   
LPCTSTR lpAppName,   
LPCTSTR lpKeyName,   
LPCTSTR lpString,   
LPCTSTR lpFileName   
);    
其中各参数的意义:   
LPCTSTR lpAppName 是INI文件中的一个字段名.   
LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名.   
LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.   
LPCTSTR lpFileName 是完整的INI文件名.   
2.具体使用方法:设现有一名学生,需把他的姓名和年龄写入 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=张三   
3.要将学生的年龄保存下来,只需将整型的值变为字符型即可:   
strTemp.Format("%d",nAge);   
::WritePrivateProfileString("StudentInfo","Age",strTemp,"c:\\stud\\student.ini");    
二.将信息从INI文件中读入程序中的变量.   
1.所用的WINAPI函数原型为:   
DWORD GetPrivateProfileString(   
LPCTSTR lpAppName,    
LPCTSTR lpKeyName,    
LPCTSTR lpDefault,    
LPTSTR lpReturnedString,    
DWORD nSize,    
LPCTSTR lpFileName    
);    
其中各参数的意义:    
前二个参数与 WritePrivateProfileString中的意义一样.   
lpDefault : 如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量.    
lpReturnedString : 接收INI文件中的值的CString对象,即目的缓存器.   
nSize : 目的缓存器的大小.   
lpFileName : 是完整的INI文件名.   
2.具体使用方法:现要将上一步中写入的学生的信息读入程序中.   
CString strStudName;   
int nStudAge;    
GetPrivateProfileString("StudentInfo","Name","默认姓名",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"c:\\stud\\student.ini");    
执行后 strStudName 的值为:"张三",若前两个参数有误,其值为:"默认姓名".   
3.读入整型值要用另一个WINAPI函数:    
UINT GetPrivateProfileInt(   
LPCTSTR lpAppName,    
LPCTSTR lpKeyName,    
INT nDefault,    
LPCTSTR lpFileName    
);    
这里的参数意义与上相同.使用方法如下:   
nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c:\\stud\\student.ini");    
三.循环写入多个值,设现有一程序,要将最近使用的几个文件名保存下来,具体程序如下:   
1.写入:   
CString strTemp,strTempA;   
int i;   
int nCount=6;   
file://共有6个文件名需要保存   
for(i=0;i {strTemp.Format("%d",i);   
strTempA=文件名;   
file://文件名可以从数组,列表框等处取得.   
::WritePrivateProfileString("UseFileName","FileName"+strTemp,strTempA,"c:\\usefile\\usefile.ini");   
}   
strTemp.Format("%d",nCount);   
::WritePrivateProfileString("FileCount","Count",strTemp,"c:\\usefile\\usefile.ini");   
file://将文件总数写入,以便读出.    
2.读出:   
nCount=::GetPrivateProfileInt("FileCount","Count",0,"c:\\usefile\\usefile.ini");   
for(i=0;i {strTemp.Format("%d",i);   
strTemp="FileName"+strTemp;   
::GetPrivateProfileString("CurrentIni",strTemp,"default.fil", strTempA.GetBuffer(MAX_PATH),MAX_PATH,"c:\\usefile\\usefile.ini");   
file://使用strTempA中的内容.   
}    
补充四点:   
1.INI文件的路径必须完整,文件名前面的各级目录必须存在,否则写入不成功,该函数返回 FALSE 值.   
2.文件名的路径中必须为 \\ ,因为在VC++中, \\ 才表示一个 \ .   
3.也可将INI文件放在程序所在目录,此时 lpFileName 参数为: ".\\student.ini".   
4.从网页中粘贴源代码时,最好先粘贴至记事本中,再往VC中粘贴,否则易造成编译错误,开始时我也十分不解,好好的代码怎么就不对呢?后来才找到这个方法.还有一些代码中使用了全角字符如:<,\等,也会造成编译错误.   
VB没有直接读写INI文件的语句,必须借助Windows API来操作INI文件。相应的Windows API函数有两类:一类是GetProfileInt、GetProfileString、WriteProfileInt和 WriteProfileString,它们是读写Win.ini中的设置;另一类是GetPrivateProfileInt、 GetPrivateProfileString、WritePrivateProfileInt和 WritePrivateProfileString,它们可以读写如何一个.ini文件。这些函数的声明都在Win32api.txt中找到。先在VB 中建立一个模块,输入以下代码:    
    Declare Function GetPrivateProfileString Lib "kernel32" _    
    Alias "GetPrivateProfileStringA" (ByVal lpApplicationName _    
    As String, ByVal lpKeyName As Any, ByVal lpDefault As String, _    
    ByVal lpReturnedString As String, ByVal nSize As Long, _    
    ByVal lpFileName As String) As Long    
    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    
    下面的例子将从njcom.ini中读取NJStar Communicator的目录。    
     Dim s As String * 256    
     GetPrivateProfileString "NJCOM Options", _    
     "Home Directory", "", s, 256, "njcom.ini"    
     Label1.Caption = s    
    下面的例子将利用WritePrivateProfileString删除掉njcom.ini中Home Directory设置。这里我们的第三个参数不是通常的字符串,而是0&,这里你可以看到我们在声明参数类型时使用As Any的好处。    
    WritePrivateProfileString "NJCOM Options", _    
     "Home Directory", 0&, "njcom.ini"

   

以上就介绍了VC/MFC的学习,希望对VC/MFC有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言VC/MFC频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程