【已解決】.ini檔案無法讀取資訊
阿新 • • 發佈:2019-02-03
C++的庫提供了現成的讀取.ini檔案的API:GetPrivateProfileInt和GetPrivateProfileString,具體上網查。
我的呼叫如下:
int port = GetPrivateProfileInt(L"PORT", L"port", 5555, L".\\test.ini");
test.ini檔案內容如下:
[PORT]
port=8888
但是port始終為5555,而不是檔案裡的8888
我本以為可能是斜槓寫反了之類的問題,也有可能是斜槓只寫了一個的問題,反反覆覆改了幾遍,仍然無果。直到在某帖子裡看到ini檔案的編碼格式為ANSI才能被正確讀取,才算找到了解決方法。
該函式使用需要注意的問題如下:
1、斜槓寫兩道,而且是\不是/。在資料夾路徑中用的就是\,貼上程序序需要多加一道。
2、我上邊ini檔案用的是相對路徑,這個相對是相對於真正呼叫到它的cpp而言的。我這個語句寫在一個最終封裝為dll輸出的A.cpp中,在另外一個B.cpp中呼叫該dll的介面,那麼按照我的相對路徑,我的test.ini應該放在B.cpp的同級目錄下,而不是A.cpp。
3、就是上面的編碼格式問題。值得注意的是,前不久我在寫一個Flash讀取txt檔案的程式時,也遇到了編碼問題。txt預設儲存為ANSI格式,而Flash讀取需要讀UTF-8格式,所以這和本題正好相反。切記切記。