视觉 如何在C++中读取 ini 文件

visual How can I read an ini file in C++?

本文关键字:读取 ini 文件 C++ 视觉      更新时间:2023-10-16

可能的重复项:
在C++中解析 INI 文件的最简单方法是什么?

如何在C++中从.ini文件中读取部分、键和值?

你能帮我提供非常简单的代码来读取简单的文件吗?

例如:

[部分]键1=int_value1键2=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

https://github.com/brofield/simpleini 是

我用来读取ini文件的那个,它是一个易于使用和集成的简单模板类,作为奖励,它是跨平台的。

对于初学者来说,INI 文件已经过时,应尽可能避免使用。由于格式简单(也许是正确的(,它们似乎很诱人,但受到限制,并且用于访问它们的 API 已被弃用和/或较弱。如果可以的话,使用一个简单的XML配置文件可能会更好(尽管它也可能需要外部代码,而且许多XML解析器又胖又丑;pugixml是我的最爱(。

如果您确实必须使用 INI,则需要此处列出的GetPrivateProfile*函数(我假设您的目标是 Windows 并且可以使用 WinAPI 函数,因为您在 VS 上(。

函数的精确行为实际上有些复杂,但在大多数情况下,它们会像您期望的那样工作,尽管很笨拙。您可以查询文件中的节、整数和字符串,如下所示:

UINT value = GetPrivateProfileInt("Section", "Key", DEFAULT_VALUE, "program.ini");

等等。一个潜在的混淆点是部分 ( lpAppName ( 的参数名称,这在使用单应用/多部分 INI 时不准确。

但请注意,INI 功能很慢。他们经常加载并通读整个文件,寻找他们需要的部分,连续的调用将重新打开并重新读取文件的大部分内容。它们很旧且未优化,因此您应该保持呼叫。如果您需要速度,请缓存值,一次性读取它们,或使用可以运行的东西(如 XML(。