如何在C++中解析.ini文件的最简单方法? 我怎样才能从.ini文件中读取节、键和值呢?
您能否提供一个非常简单的代码来读取简单文件?
例如:
[SECTION] key1=int_value1 key2=string_value2
[SECTION] key1=int_value1 key2=string_value2
请查看GetPrivateProfileString和WritePrivateProfileString API:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724353%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms725501%28v=vs.85%29.aspx
首先,INI 文件已经过时了,应尽可能避免使用。它们因其简单的格式而显得有吸引力(也许理所当然),但是存在很多限制,用于访问它们的 API 已经被弃用或者不够强大。如果可以的话,使用一个简单的 XML 配置文件可能会更好(虽然这也可能需要外部代码,并且许多 XML 解析器非常笨重和难看;pugixml 是我最喜欢的解析器)。
如果您确实必须使用 INI 文件,则需要使用列在 这里 的 GetPrivateProfile*
函数(假设您正在针对 Windows 平台编程并且可以使用 WinAPI 函数,因为您在使用 VS)。
实际上,这些函数的精确行为有些复杂,但在大多数情况下,它们会按照您的期望工作,尽管有些笨拙。您可以查询一个文件的章节、整数和字符串,如下所示:
UINT value = GetPrivateProfileInt("Section", "Key", DEFAULT_VALUE, "program.ini");
等等。一个可能会引起混淆的地方是节的参数名称(lpAppName
),当使用单应用程序/多节INI时不准确。
然而,请注意,INI函数速度较慢。它们经常加载并读取整个文件以查找所需部分,并且连续调用将重新打开和重新读取文件的大部分内容。它们已经过时且未经优化,因此您应该尽量减少调用次数。如果需要速度,请缓存值,在单个操作中读取它们,或使用可以实现这一点的其他方法(如XML)。