2012-01-03 121 views
1

可能重复:
What is the easiest way to parse an INI File in C++?如何读取C++中的ini文件?

我怎样才能阅读部分,从C++ .ini文件键和值?

你能帮我提供一个简单的代码来阅读简单文件吗?

例如为:

 
[SECTION] 
key1=int_value1 
key2=string_value2 
+2

你做什么努力去实现它? – 2012-01-03 21:44:08

+0

可能的重复:http://stackoverflow.com/q/12633/10077 – 2012-01-03 21:46:32

+0

亲爱的保罗,我在尝试使用这个问题(GetPrivateProfileInt)之前很难尝试使用这个问题,但它并不适用于我。我只是初中C++的错误是(GetPrivateProfileInt标识符没有找到 – 2012-01-03 22:06:16

回答

-1

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

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

这些函数的确切行为实际上有些复杂,但大多数情况下,它们会像您期望的那样工作,如果不明智的话。您可以查询部分,整数和字符串的文件时,:

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

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

但是,请注意,INI功能很慢。他们经常加载并通读整个文件,寻找他们需要的部分,连续调用将重新打开并重新读取大部分文件。他们很老,没有优化,所以你应该保持通话。如果你需要速度,缓存这些值,一次性读取它们,或者使用一些(比如XML)。

+8

告诉某人避免使用某些东西,因为它是“旧的”几乎从来不是好建议,如果这真的是不使用它的最好理由,那么使用它没有任何问题(并且我不知道API对于他们“弱”是什么意思)。 – Fred 2012-12-03 04:45:17