2016-12-22 91 views
0

我想用Visual Studio的64位編譯器在C++中讀取ini文件,而GetPrivateProfileString()不適用於64位編譯器,它只適用於Win32。 除了使用GetPrivateProfileString()之外,還有什麼方法可以讀取這種文件?使用64位編譯器在C++中讀取ini文件

+2

MSDN:「此功能僅用於兼容16位基於Windows的應用程序,應用程序應將初始化信息存儲在註冊表中。」您現在可能需要第三方庫來讀取ini文件。 –

+0

你知道嗎? – Rabieh

+1

@Rabieh詢問第三方資源在這裏是_offf-topic_。 –

回答

0

我還不能評論,所以我回答。
GetPrivateProfileString()在任何平臺,Win32和x64以及任何字符集UNICODE或MBCS上適用於Visual Studio 2015。
仔細檢查您的代碼,或發佈它,讓我們可以看看。

1

GetPrivateProfileString()不適用於64位編譯器它只適用於Win32。

這是絕對不正確的。幾乎所有Win32函數的所有都可以使用64位版本,並且GetPrivateProfileString也不例外。如果你無法使它工作,那麼你寫的代碼是錯誤的。不幸的是,你沒有顯示該代碼,所以我們不能告訴你如何解決它。

請確保在嘗試調用此函數時將完全限定路徑傳遞給文件!相對路徑不會產生預期的效果。

但是,您應該不會使用GetPrivateProfileString。作爲the documentation說:

注意此功能僅用於16位的基於Windows的應用程序兼容。應用程序應該在註冊表中存儲初始化信息

INI文件有時仍然是一個合理的選擇,例如,作爲您不想修改註冊表的「便攜」應用程序的設置文件 - 但您仍然不應使用Windows API函數讀取和寫入這些文件。它們非常陳舊,直接從16位Windows移植過來,並且出於向後兼容的原因包含許多意外的行爲。他們也很慢,並提供非常有限的功能。

雖然有很多選擇,我個人的建議是SimpleINI library。這是跨平臺的,使用C++標準庫,並已在MIT許可證下發布。只需將其放入並開始使用即可。我運作良好;我在我的一個MFC應用程序中使用它。

You could also use Boost讀取INI文件。

+0

我忘了包括,所以這是一個問題。謝謝大家 – Rabieh