可能重複:
What is the easiest way to parse an INI File in C++?如何讀取C++中的ini文件?
我怎樣才能閱讀部分,從C++ .ini文件鍵和值?
你能幫我提供一個簡單的代碼來閱讀簡單文件嗎?
例如爲:
[SECTION] key1=int_value1 key2=string_value2
可能重複:
What is the easiest way to parse an INI File in C++?如何讀取C++中的ini文件?
我怎樣才能閱讀部分,從C++ .ini文件鍵和值?
你能幫我提供一個簡單的代碼來閱讀簡單文件嗎?
例如爲:
[SECTION] key1=int_value1 key2=string_value2
https://github.com/brofield/simpleini是一個我用來讀取INI文件,這是一個簡單的模板類,它是易於使用和集成,作爲獎勵,它是跨平臺的。
對於初學者來說,INI文件已經過時,應儘可能避免。由於格式簡單(或許正確),它們似乎很誘人,但是受到限制,訪問它們的API已被棄用和/或弱化。如果可以的話,使用一個簡單的XML配置文件可能會更好(雖然它可能還需要外部代碼,許多XML解析器都很胖,很難看; pugixml是我最喜歡的)。
如果您必須使用INI,您需要GetPrivateProfile*
函數,如列出的here(我假設您的目標是Windows,並且可以使用WinAPI函數,因爲您在VS上)。
這些函數的確切行爲實際上有些複雜,但大多數情況下,它們會像您期望的那樣工作,如果不明智的話。您可以查詢部分,整數和字符串的文件時,:
UINT value = GetPrivateProfileInt("Section", "Key", DEFAULT_VALUE, "program.ini");
等等。潛在的混淆點是各部分的參數名稱(lpAppName
),使用單應用程序/多部分INI時不準確。
但是,請注意,INI功能很慢。他們經常加載並通讀整個文件,尋找他們需要的部分,連續調用將重新打開並重新讀取大部分文件。他們很老,沒有優化,所以你應該保持通話。如果你需要速度,緩存這些值,一次性讀取它們,或者使用一些(比如XML)。
告訴某人避免使用某些東西,因爲它是「舊的」幾乎從來不是好建議,如果這真的是不使用它的最好理由,那麼使用它沒有任何問題(並且我不知道API對於他們「弱」是什麼意思)。 – Fred 2012-12-03 04:45:17
查找到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
你做什麼努力去實現它? – 2012-01-03 21:44:08
可能的重複:http://stackoverflow.com/q/12633/10077 – 2012-01-03 21:46:32
親愛的保羅,我在嘗試使用這個問題(GetPrivateProfileInt)之前很難嘗試使用這個問題,但它並不適用於我。我只是初中C++的錯誤是(GetPrivateProfileInt標識符沒有找到 – 2012-01-03 22:06:16