1. 程式人生 > >利用GetPrivateProfileString讀取配置檔案(.ini)(

利用GetPrivateProfileString讀取配置檔案(.ini)(

寫入.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()函式,才可以進行其他的諸如字串+操作