MFC學習筆記 讀寫配置檔案 ini 和登錄檔

2021-07-15 03:44:54 字數 3253 閱讀 4828

配置檔案中經常用到ini檔案,在vc中其函式分別為:

//寫入.ini檔案:
//讀取.ini檔案:
//讀取整形值:
例子:

寫入:

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函式

dword getcurrentdirectory(

dwordnbufferlength,// size of directory buffer 緩衝區的長度

lptstrlpbuffer// directory buffer 指定乙個預定義字串,用於裝載當前目錄

);

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

用writeprofilestring和writeprofileint來對登錄檔進行了寫入操作

用getprofileint和getprofilestring對登錄檔進行了讀取操作

注意:這幾個函式只能用於對登錄檔的操作,這也是和writeprivateprofilestring、getprivateprofilestring的區別,後者是對ini檔案的讀寫

(2)具體操作如下:

// 以下**放到initinstance中

// 首先清除登錄檔鍵值變數所分配的記憶體空間

free((void*)m_pszregistrykey);

// 再清除ini變數

free((void*)m_pszprofilename);

// 改變ini檔名.

cstring filepathtemp ="";

char filepath[max_path]=;

::getcurrentdirectory(max_path,filepath);

filepathtemp=cstring(filepath);

if(filepathtemp.right(1)!="\\")

cstring profilepath = filepathtemp+"canshu.ini";

m_pszprofilename=_tcsdup("profilepath ");

進行完以上設定後我就可以直接使用getprofilestring 、writeprofilestring等函式進行操作了。

cstring getprofilestring( lpctstr lpszsection, lpctstr lpszentry, lpctstr lpszdefault = null );

1、返回值

返回值是應用程式的.ini檔案中的字串,如果找不到該字串,則為lpszdefault。框架支援的字串最大長度為_max_path。如果lpszdefault為null,則返回值是乙個空字串。

2、引數: lpszsection 指向乙個以null結尾的字串,指定了包含入口的部分。

3、說明

呼叫這個函式以獲得與應用程式的登錄檔或.ini檔案中指定部分的入口相關的字串。

這些入口按照如下方式儲存:

·windows nt 該值儲存在登錄檔中

·windows 3.x 該值儲存在win.ini檔案中

·windows 95 該值儲存在win.ini的緩衝版本中

4、示例

cstring strsection = "my section";

cstring strstringitem = "my string item";

cstring strintitem = "my int item";

cstring strvalue;

assert(strvalue == "test");

int nvalue;

assert(nvalue == 1234);

(3)登錄檔存放的位置:

開始-執行->輸入regedit->hey-current-user->software下,找即可。

MFC配置檔案讀寫

獲取當前檔案路徑 函式原型 dword getcurrentdirectory dword nbufferlength,lpwstr lpbuffer 函式返回值 返回0表示失敗,當函式呼叫成功將返回寫入緩衝區的字串長度 緩衝區長度 1 使用已定義的常量max path 260 2 使用給函式傳入n...

MFC 讀寫配置檔案 ini

1 寫ini檔案 把student.ini 放到c盤根目錄下,路徑也可以在程式裡的兩個函式調整 bool writeprivateprofilestring lpctstr lpkeyname,lpctstr lpstring,lpctstr lpfilename 其中各引數的意義 lpctstr ...

讀寫配置檔案

windows作業系統專門為此提供了6個api函式來對配置設定檔案進行讀 寫 getprivateprofileint 從私有初始化檔案獲取整型數值 getprivateprofilestring 從私有初始化檔案獲取字串型值 getprofileint 從win.ini 獲取整數值 getprof...