VC中操作INI文件的API

(1)操作系统配置文件Win.ini的函数:

函数名

功能

GetProfileSection

读取win.ini中指定节lpAppName中所有键名及其值。lpReturnedString字符串形式如下:

Key1=Value1/0Key2=Value2/0…KeyN=ValueN/0/0

GetProfileString

读取win.ini中指定节lpAppName中键名为lpKeyName对应变量的字符串值。

GetProfileInt

读取win.ini中指定节lpAppName中键名为lpKeyName对应变量的整数值。

WriteProfileSection

写(替换)win.ini中指定节lpAppName中的键值。

lpString字符串形式同GetProfileSection中的lpReturnedString。

WriteProfileString

写(替换)win.ini中指定节lpAppName中键名为lpKeyName对应变量的字符串值。

(2)操作用户自定义配置文件(PrivateProfile.ini)的函数:

函数名

功能

GetPrivateProfileSectionNames

读取lpFileName指定的配置文件中所有的节名。lpszReturnBuffer字符串形式如下:

Section1/0Section2/0…SectionN/0/0

GetPrivateProfileSection

同GetProfileSection。

GetPrivateProfileString

同GetProfileString。

GetPrivateProfileInt

同GetProfileInt

GetPrivateProfileStruct

须同WritePrivateProfileStruct配套使用。

WritePrivateProfileSection

同WriteProfileSection

WritePrivateProfileString

同WriteProfileString

WritePrivateProfileStruct

不常用。

注意:

(1)使用得最频繁的是 GetPrivateProfileString 和 WritePrivateProfileString,没有WriteProfileInt/WritePrivateProfileInt函数。

(2)Get系列读取节键值,如果文件路径有误或节键名不对则返回设定的默认值。

(3)访存自定义配置文件时,文件路径lpFileName必须完整,文件名前面的各级目录必须存在。如果lpFileName文件路径不存在,则函数返回FALSE,GetLastError() = ERROR_PATH_NOT_FOUND。1.如果路径正确,但是文件不存在,则该函数将先创建该文件。2.如果路径及文件存在,则在现有ini文件基础上进行读写。3.如果 lpFileName 只指定文件名而没有路径的话,调用API将会去 Windows 的安装目录去查找而不会在当前目录查找。

(4)要对调用API的模块(exe)所在目录下进行配置文件操作,可使用形如“.//config.ini”的相对路径,注意转义符。

(5)调用WritePrivateProfileSection,若参数三 lpString为NULL,则可将对应section的全部内容清空;调用WritePrivateProfileString,若参数三 lpString为NULL,则可将对应key删除。

鉴于XML的树形描述层次结构性清晰,现在很多软件都大面积使用XML文件进行配置,如QQ的全局配置文件C:/Program Files/Tencent/QQ/gf-config.xml。java程序的配置文件基本都使用XML格式,C++中并没有操作XML文件的标准库。

//读写系统的INI

Windows都有C:\Windows\win.ini  本次操作就是读写此文件

1. 把信息写入系统的win.ini文件

BOOL WriteProfileString(

LPCTSTR lpAppName,  //节的名字,是一个以0结束的字符串

LPCTSTR lpKeyName,  //键的名字,是一个以0结束的字符串。若为NULL,则删除整个节

LPCTSTR lpString      //键的值,是一个以0结束的字符串。若为NULL,则删除对应的键

)

//在win.ini中创建一个Test节,并在该节中创建一个键id,其值为xym

::WriteProfileString("Test","id","xym");

2. 读取字符串

DWORD GetProfileString(

LPCTSTR lpAppName,         // 节名

LPCTSTR lpKeyName,         // 键名,读取该键的值

LPCTSTR lpDefault,           // 若指定的键不存在,该值作为读取的默认值

LPTSTR lpReturnedString,      // 一个指向缓冲区的指针,接收读取的字符串

DWORD nSize                // 指定lpReturnedString指向的缓冲区的大小

)

CString str;

::GetProfileString("Test","id","Error",str.GetBuffer(20),20);

3. 读取整数

UINT GetProfileInt(

LPCTSTR lpAppName,      // 节名

LPCTSTR lpKeyName,      // 键名,读取该键的值

INT nDefault              // 若指定的键名不存在,该值作为读取的默认值

)

::WriteProfileString("Test","age","25");

int age;

age=::GetProfileInt("Test","age",0);

4. 删除键(值)

::WriteProfileString("Test",NULL,NULL);    //删除win.ini中的Test节

::WriteProfileString("Test","id",NULL);      //删除win.ini中的id键

5. 写值

BOOL WriteProfileSection( LPCTSTR lpAppName, // section name LPCTSTR lpString // data buffer);

WriteProfileSection("1234567890","fdsgfdsg");

结果:

[1234567890]

Fdsgfdsg

6. 读值

DWORD GetProfileSection( LPCTSTR lpAppName, // section name LPTSTR lpReturnedString, // return buffer DWORD nSize // size of return buffer);

CString str;

GetProfileSection("1234567890",str.GetBuffer(256),256);

///读写用户自定义的INI

1. 把信息写入用户的win.ini文件

BOOL WritePrivateProfileString(

LPCTSTR lpAppName,      // 节的名字,是一个以0结束的字符串

LPCTSTR lpKeyName,      // 键的名字,是一个以0结束的字符串。若为NULL,则删除整个节

LPCTSTR lpString,         // 键的值,是一个以0结束的字符串。若为NULL,则删除对应的键

LPCTSTR lpFileName      // 要写入的文件的文件名。若该ini文件与程序在同一个目录下,也可使用相对

//路径,否则需要给出绝度路径。

)

::WritePrivateProfileString("Test","id","xym","d://vc//Ex1//ex1.ini");

//在Ex1目录下的ex1.ini中创建一个Test节,并在该节中创建一个键id,其值为xym

//若Ex1.ini文件与读写该文件的程序在同一个目录下,则上面语句也可写为:

::WritePrivateProfileString("Test","id","xym",".//ex1.ini");

//::WritePrivateProfileString("Test","id","xym","ex1.ini");这样写的话会在windows目录下生成配置文件

2. 读取字符串

DWORD GetPrivateProfileString(

LPCTSTR lpAppName,           //  节名

LPCTSTR lpKeyName,           // 键名,读取该键的值

LPCTSTR lpDefault,             // 若指定的键不存在,该值作为读取的默认值

LPTSTR lpReturnedString,        // 一个指向缓冲区的指针,接收读取的字符串

DWORD nSize,                 // 指定lpReturnedString指向的缓冲区的大小

LPCTSTR lpFileName           // 读取信息的文件名。若该ini文件与程序在同一个目录下,也可使用相

//对路径,否则需要给出绝度路径。

)

CString str;

::GetPrivateProfileString("Test","id","Error",str.GetBuffer(20),20,".//ex1.ini");

或:

::GetPrivateProfileString("Test","id","Error",str.GetBuffer(20),20,"d://vc//Ex1//ex1.ini");

3. 读取整数

UINT GetPrivateProfileInt(

LPCTSTR lpAppName,      // 节的名字,是一个以0结束的字符串

LPCTSTR lpKeyName,      // 键名,读取该键的值

INT nDefault,              // 若指定的键名不存在,该值作为读取的默认值

LPCTSTR lpFileName       // 要写入的文件的文件名。若该ini文件与程序在同一个目录下,也可使用相对

//对路径,否则需要给出绝度路径。

)

::WritePrivateProfileString("Test","age","25",".//ex1.ini");

int age;

age=::GetPrivateProfileInt("Test","age",0,".//ex1.ini");

4. 删除键(值)

::WritePrivateProfileString("Test",NULL,NULL,".//ex1.ini");      //删除ex1.ini中的Test节

::WritePrivateProfileString("Test","id",NULL,".//ex1.ini");       //删除ex1.ini中的id键

5.写值

BOOL WritePrivateProfileSection( LPCTSTR lpAppName, // section name LPCTSTR lpString, // data LPCTSTR lpFileName // file name );

WritePrivateProfileSection("1234567890","fdsgfdsg",".//表情协议.ini");

结果:

[1234567890]

Fdsgfdsg

6. 读值

DWORD GetPrivateProfileSection( LPCTSTR lpAppName, // section name LPTSTR lpReturnedString, // return buffer DWORD nSize, // size of return buffer LPCTSTR lpFileName // initialization file name );

CString str;

GetPrivateProfileSection("1234567890",str.GetBuffer(256),256,".//表情协议.ini");

7.GetPrivateProfileSectionNames函数

DWORD GetPrivateProfileSectionNames(

LPTSTR lpszReturnBuffer,         // 指向一个缓冲区,用来保存返回的所有节名

DWORD nSize,                  // 参数lpszReturnBuffer的大小

LPCTSTR lpFileName            // 文件名,若该ini文件与程序在同一个目录下,

//也可使用相对路径,否则需要给出绝度路径

)

CString str;

GetPrivateProfileSectionNames(str.GetBuffer(256),256,".\\表情协议.ini");

VC中操作INI文件的API相关推荐

  1. vc中操作INI文件函数

    一 VC中操作INI文件函数 函数名 功能 备注 GetPrivateProfileInt                       读取INI文件指定块中的键名对应的整数值.   GetPriva ...

  2. VC中读写ini文件

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

  3. VC++中实现INI文件读写的方法和示例

    一:读ini配置文件 DWORD GetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LP ...

  4. VC操作INI文件 ,INI文件操作总结,如何操作INI文件,INI文件使用方法小结

    INI文件简介 在我们写程序时,总有一些配置信息需要保存下来,以便在下一次启动程序完成初始化,这实际上是一种类持久化.将一些信息写入INI文件(initialization file)中,可完成简单的 ...

  5. MFC操作ini文件方法

    转载:https://blog.csdn.net/rayborn1105/article/details/8192142 在我们的程序设计中经常需要对一些参数进行配置,配置好后还要在下一次启动仍然有效 ...

  6. 轻松实现一个操作ini文件的类

    作者:lixiaosan(CSDN) 前言: 相信很多朋友在编写自己的程序中,都需要把一些数据先期导入到程序中进行初始化.那么这个时候,比较好的做法就是把你所有的数据写入一个ini文件,然后在程序去读 ...

  7. 在Windows mobile 5.0下操作INI文件

    对于Windows mobile 5.0来说没有像window那样操作INI文件的API,所以只能自已来实现.其实操作INI文件就是操作普通的文本文件,只是要麻烦一些.以下是我实现的一些常用的操作的函 ...

  8. python中csv文件操作_python中操作csv文件

    python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...

  9. VC++中操作XML(MFC、SDK)

    VC++中操作XML(MFC.SDK) XML在Win32程序方面应该没有在Web方面应用得多,很多Win32程序也只是用XML来存存配置信息而已,而且没有足够的好处的话还不如用ini.VC++里操作 ...

最新文章

  1. centos6.6 Kickstart无人值守安装(一):原理篇
  2. 2009 Competition Highlights by ICPC Live
  3. linux系统源码安装教程,linux之源码包安装步骤
  4. 「每周CV论文推荐」 初学深度学习人脸关键点检测必读文章
  5. Java前景如何?现在还能学Java吗?
  6. CrtInvertedIdx
  7. 取出客户端卸载CKEditor中的内容,放入数据库中的方案
  8. 基础知识(七)opencv、python、人脸框检测
  9. HDU 4893 Wow! Such Sequence!(2014年多校联合 第三场 G)(线段树)
  10. 暴力删除文件(文件夹)之为所欲为
  11. V-Play入门手册3-如何编写高效的代码?
  12. 百度编辑器ueditor 的 submit 表单提交
  13. java极光推送demo_Java集成极光推送
  14. 计算机主机三维模型,三维模型
  15. 参考文献标引方式_参考文献标注方法有哪些 为什么要标注参考文献
  16. win10输入法看不见选字框_Win10更新后微软拼音输入法没有选字框怎么办?
  17. 游戏原画教程:角色设计中的几个基本图形的用法
  18. QT学习教程-(1)QT新建项目并打包hellow world
  19. 编写java百分制转化五分制_百分制与五分制的换算(百分制转换五分制公式)
  20. 局域网三大攻击工具的攻击原理及其防范

热门文章

  1. Oracle之同义词,DBLINK,表空间
  2. 点击按钮创建一个表格 点击按钮创建一个表格 权限选择 元素的value属性操作
  3. 泛微文档存放在服务器哪个地址,泛微OA根据文档的docid查询文档附件存放的路径...
  4. _Linux 的文件系统及文件缓存知识点整理
  5. C51_按键按下,流水灯亮起,数码管显示按下的次数
  6. ElasticSearch6.5.0 【安装IK分词器】
  7. macOS NSTableView
  8. cxgrid实现分组统计和添加Footer
  9. 偏见为什么是数据科学领域的一个大问题
  10. android单独刷入镜像