利用GetPrivateProfileString讀取配置文件(.ini)

 
配置文件中經常用到ini文件,在VC中其函數分別爲:

寫入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);

讀取.ini文件:DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefaut,LPSTR lpReturnedString,DWORD nSize,LPCTSTR lpFileName);

讀取整形值:UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName);

其中個參數的意思:

LPCTSTR lpAppName ------- INI文件中的一個字段名

LPCTSTR lpKeyName -------- lpAppName 下的一個鍵名,也就是裏面具體的變量名

LPCTSTR lpString ---------是鍵值,也就是變量的值, 必須爲LPCTSTR或CString類型

LPCTSTR lpFileName --------完整的INI文件路徑名

LPCTSTR lpDefaut ----------如果沒有其前兩個參數值,則將此值賦給變量

LPSTR lpReturnedString --------接收INI文件中的值的CString對象,即接收緩衝區

DWORD nSize ------接收緩衝區的大小

例子:

CString StrName,Strtemp;

int nAge;

StrName = "jacky";

nAge = 13;

WritePrivateProfileString("Student","Name",StrName,"c://setting.ini");

結果:(INI文件中顯示如下:)

[Student]

Name=jacky

讀取:

CString SName;

GetPrivateProfileString("Student","Name","DefaultName",SName.GetBuffer(MAX_LENGTH),MAX_LENGTH,"c://setting.ini");

結果:SName = "jacky";這裏需要注意點就是用完GetBuffer函數後一定要釋放(用SName.ReleaseBuffer()函數),不然後面再用到SName的其他子函數就會失靈。

讀整數比較簡單,如下

int Result = GetPrivateProfileInt("Student","nAge",0,"c://setting.ini")返回值即爲所讀取的結果!

在GetPrivateProfileString最後一個參數是配置文件路徑的參數,此路徑只能是絕對路徑,不能是相對路徑,但現在我需要是我的exe文件能和我的配置文件在一起。因此我使用了GetCurrentDirectory函數。

原代碼如下:

CString server_ip;
CString des="";
::GetCurrentDirectory(MAX_PATHLENGTH,des.GetBuffer(MAX_PATHLENGTH));
des.ReleaseBuffer();
des+="//config.ini";
GetPrivateProfileString("PhoneDemo","Server_IP","",server_ip.GetBufferSetLength(15),15,des);
server_ip.ReleaseBuffer();

注意:在這裏使用CString變量時,在使用完GetBuffer後,緊接着一定要使用ReleaseBuffer()函數,纔可以進行其他的諸如字符串+操作

發佈了43 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章