2012-01-03 116 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