INI文件简介
在我们写程序时,总有一些配置信息需要保存下来,以便在下一次启动程序完成初始化,这实际上是一种类持久化。将一些信息写入INI文件(initialization file)中,可完成简单的持久化支持。
Windows提供了API接口用于操作INI文件,其支持的INI文件格式一般如下:
===============================
[Section1]
Key11=value11
Key12=value12
[Section2]
Key21=value21
Key22=value22
...
[SectionN]
KeyN1=valueN1
KeyN2=valueN2
===============================
一般一个INI文件可有N个节,每节可有n个键名及值对应,每个键名及其值以等式形式占一行。
一般键的名称可任取,不过建议用有意义的字符及词构成。值一般可为整数和字符串,其它类型要进行转换。
常见的系统配置文件:
C:/boot.ini
C:/WINDOWS/win.ini
C:/WINDOWS/system.ini
C:/WINDOWS/desktop.ini
C:/WINDOWS/Resources/Themes/Windows Classic.theme
注意,字符串存贮在INI文件中时没有引号;key和value之间的等号前后不容空格;注释以分号“;”开头。
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。如果路径正确,但是文件不存在,则该函数将先创建该文件。如果路径及文件存在,则在现有ini文件基础上进行读写。
如果 lpFileName 只指定文件名而没有路径的话,调用API将会去 Windows 的安装目录去查找而不会在当前目录查找。
(4)要对调用API的模块(exe)所在目录下进行配置文件操作,可使用形如“.//config.ini”的相对路径,注意转义符。
(5)调用WritePrivateProfileSection,若参数三 lpString为NULL,则可将对应section的全部内容清空;调用WritePrivateProfileString,若参数三 lpString为NULL,则可将对应key删除。
跨平台配置文件
INI文件本质是对文件和字符串的处理,因此在跨平台项目中的配置文件可以基于<stdio.h>中的标C文件FILE,然后实现像类似以上对节([Section])、键(Key)和值(Value)的字符串读写功能。
鉴于XML的树形描述层次结构性清晰,现在很多软件都大面积使用XML文件进行配置,如QQ的全局配置文件C:/Program Files/Tencent/QQ/gf-config.xml。java程序的配置文件基本都使用XML格式,C++中并没有操作XML文件的标准库。
在C/C++程序中要使用XML做为配置文件,涉及到XML的解析。Windows平台可使用MsXml对XML进行解析,参考《MsXml创建和解析XML示例》,跨平台可以考虑自己实现,或使用C++ BOOST正则表达式,或选择Free C or C++ XML Parser Libraries,如XmlParser、TinyXML、CMarkup、libxml等。
CIniFile类
以下提供对Windows操作INI文件的API的简单封装类CIniFile。
参考:
《在VC++中读写INI文件》
《VC INI文件读写》
《用VC++操作INI文件》
《INI操作类》
《INI文件查看器》
《C++中的XML配置文件编程经验》
分享到:
相关推荐
在本文中,我们将深入探讨如何在VC++中操作INI文件,包括读取、写入和修改INI文件。 1. **读取INI文件** 在VC++中,我们可以使用Windows API函数`GetPrivateProfileString`和`GetPrivateProfileInt`来读取INI文件...
但了解如何在VC++中操作INI文件仍然对理解Windows编程历史和实现简单配置管理有重要意义。 总的来说,VC++通过Windows API提供的函数能够轻松地读写INI文件,这对于小型应用程序或学习基础的Windows编程非常实用。...
1. 在操作INI文件前,确保文件存在,否则可能导致错误。 2. 使用API函数时,注意字符串必须是宽字符类型(`LPTSTR`对应`LPCTSTR`),以兼容Unicode编码。 3. 文件路径应包含正确的文件扩展名`.ini`。 4. 读写操作...
ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。读写ini文件实际上就是读写某个的...
本文将深入探讨如何在VC++(Visual C++)环境中读取和操作INI文件,基于提供的"VC读取Ini文件例子"。 首先,让我们理解INI文件的基本结构。INI文件通常包含多个节(Section),每个节下面有多个键值对(Key-Value ...
在VC6.0(Visual C++ 6.0)环境下,我们可以利用Windows API函数来读取和操作INI文件。本程序示例展示了如何在VC6.0中实现对INI文件的读取。 1. **INI文件结构** INI文件通常包含三个部分:`[Section]`、`Key=...
"VC使用INI文件保存程序的信息"这个主题涉及到如何在Visual C++(VC)环境下利用INI文件来实现数据持久化,方便程序在后续运行时读取和使用这些信息。 INI文件的结构简单易懂,由键值对组成,每个键值对代表一个...
Windows操作系统提供了几个API函数,使得开发者能够方便地操作INI文件: 1. `GetPrivateProfileString`:读取INI文件中的键值。 2. `WritePrivateProfileString`:向INI文件中写入键值。 3. `GetPrivateProfileInt`...
CIni类是对Windows API中的GetPrivateProfileString、WritePrivateProfileString等函数的封装,提供了一种面向对象的方式来操作Ini文件。它通常包含以下功能: - 读取和写入键值对:如ReadString、WriteString方法...
7. **错误处理**:良好的设计还包括错误处理机制,如抛出异常或返回错误代码,以便在无法读取、写入或操作ini文件时提供反馈。 IniFile.cpp和IniFile.h是实现和声明此类的C++源文件。`.cpp`文件通常包含了类的成员...
本文将深入探讨如何在Visual C++ 2010 (VC2010)环境中操作INI文件,包括读取、写入和修改这些文件。我们将使用C++标准库和Windows API函数来实现这一目标。 首先,我们需要了解INI文件的基本结构。一个INI文件通常...
在Windows编程中,INI文件是一种常见的配置文件格式,用于存储应用程序的设置和用户偏好。本文将深入探讨如何在VC++环境中使用C语言读写INI配置文件,并通过`GetiniString_App`这个API例程来实现这一功能。 首先,...
标题中的“两个INI文件操作实例,VC++源代码”指的是使用C++编程语言,通过Microsoft Visual Studio(VC++)环境,实现对INI配置文件的读取和写入功能的两个具体示例。INI文件是一种常见的配置文件格式,常用于存储...
总的来说,CIniFile类为VC6开发者提供了一个简单且功能强大的接口,用于操作ini配置文件。通过熟练掌握这个类的使用,可以有效地管理应用程序的配置信息,提高代码的可维护性和用户体验。在进行Windows应用程序开发...
VC++中的`GetPrivateProfileString`和`WritePrivateProfileString`等函数提供了方便的接口来操作INI文件。然而,如果你希望在不依赖特定库或API的情况下处理INI文件,你可以自行编写C++代码来实现这些功能。 首先,...
在`main`函数中,我们演示了如何使用这两个函数来操作ini文件。 需要注意的是,使用完`readIniFile`返回的字符串后,记得释放分配的内存。此外,为了防止缓冲区溢出,确保`GetPrivateProfileString`的缓冲区大小...
注意,虽然上述代码演示了基本的INI文件操作,但实际项目中可能需要处理错误和边界情况,例如文件不存在、内存不足等。此外,对于大型项目,考虑使用更高级的配置文件格式(如XML、JSON或ini库)或使用数据库来存储...
这就是使用VC处理INI文件的基本流程,通过封装的类,开发者可以避免直接操作复杂且易出错的API,提高代码的可读性和可维护性。在实际开发中,可以根据需求扩展这个`IniFile`类,添加更多的功能,如支持批量操作、...
在Windows编程中,INI文件是一种常见的配置文件格式,用于存储应用程序的设置和参数。INI文件由文本构成,结构简单,易于读写。本教程将详细讲解如何使用VC++(Visual C++)进行INI配置文件的读写操作,以及提供相关...
**VC读取INI文件代码详解** 在Windows编程中,INI文件是一种常见的配置文件格式,用于存储应用程序的设置和用户偏好。VC++(Visual C++)是Microsoft开发的C++集成开发环境,支持多种Windows API,其中包括对INI...