ini配置文件的读写
很多時(shí)候,我們的程序運(yùn)行前需要用戶做一些相關(guān)的設(shè)置,而且我們總是需要把一些配置信息保存下來,那天一直在思考怎么解決這個(gè)問題,突然就想到了在一些軟件安裝目錄下的ini文件,然后經(jīng)過查找資料發(fā)現(xiàn)其實(shí)ini文件既方便又實(shí)用。下面對(duì)其使用進(jìn)行總結(jié):
一、將信息從ini文件中讀取到變量中
首先,看一個(gè)ini文件的示例。
[連接參數(shù)] IpServer=127.0.0.1 DataBase=DB_TEST UserID=test Password=123456 ;注釋用英文分號(hào)以上就是一個(gè)簡(jiǎn)單的配置文檔。讀取信息所用的函數(shù)為
DWORD GetPrivateProfileString(LPCTSTR lpAppName, // section nameLPCTSTR lpKeyName, // key nameLPCTSTR lpDefault, // default stringLPTSTR lpReturnedString, // destination bufferDWORD nSize, // size of destination bufferLPCTSTR lpFileName // initialization file name );-
第一個(gè)參數(shù)為字段名,上例中的[連接參數(shù)];
-
第二個(gè)參數(shù)鍵名,即變量名,上例中的IpServer、DataBase等等;
-
第三個(gè)參數(shù)指,如果ini文件中沒有前兩個(gè)參數(shù)指定的字段名或鍵名,則將lpDefault的值賦給變量,也就是缺省值;
-
第四個(gè)參數(shù)是接收ini文件中鍵名的值的CString對(duì)象,即目的緩存器;
-
第五個(gè)參數(shù)是目的緩存器的大小;
-
第六個(gè)參數(shù)是ini文件的完整路徑。如下:
在此額外說一點(diǎn),一般來說ini文件和exe文件是放在一起的,所以這里涉及到當(dāng)前路徑的問題,可用另一個(gè)全局函數(shù)也可以實(shí)現(xiàn),假如我們的文件是配置.ini,則如下:
CString curPath;//存儲(chǔ)路徑的CString對(duì)象 AfxGetModuleFileName(AfxGetInstanceHandle(),curPath); curPath=curPath.Left(curPath.ReverseFind('\\'))+'\\'; curPath.AppendFormat(L"配置.ini");或者還可以使lpFileName的值為:“.//配置.ini” 來定位到當(dāng)前目錄(這種方法筆者還未測(cè)試)。
此外,讀取整型值便要用另一個(gè)函數(shù):
UINT GetPrivateProfileInt(LPCTSTR lpAppName, // section nameLPCTSTR lpKeyName, // key nameINT nDefault, // return value if key name not foundLPCTSTR lpFileName // initialization file name );二、將配置信息保存到ini文件中
類似地,所用函數(shù)為:
BOOL WritePrivateProfileString(LPCTSTR lpAppName, // section nameLPCTSTR lpKeyName, // key nameLPCTSTR lpString, // string to addLPCTSTR lpFileName // initialization file );參數(shù)與讀取的時(shí)候意義基本一致,而且比讀取的時(shí)候更簡(jiǎn)單一點(diǎn),在此不作贅述。
最后,需要注意的一點(diǎn)是,文件名的路徑中反斜杠必須為\\才表示\,第一個(gè)為轉(zhuǎn)義字符。
總結(jié)
以上是生活随笔為你收集整理的ini配置文件的读写的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【通信原理课程设计】8PSK调制解调技术
- 下一篇: MFC无边框对话框实现拖动