什麼是ini文件?windows
initialization File,即爲初始化文件,是windows的系統配置文件所採用的存儲格式,統管windows的各項配置。或者做爲項目中的配置文件,爲整個項目所共用。函數
文件格式爲 節、鍵、值。其中節爲[Section name], 參數爲 key(鍵)=value(值)。spa
ini文件中註解使用分號表示(;),在分號後面的文字,直到該行結尾都所有爲註解。指針
[Section Name]用來表示一個段落,INI文件多是項目中共用的,因此使用[Section Name]段名來區分不一樣用途的參數區。key就用來表示參數名,value表示對應的值。字符串
ini文件讀原型
一、從系統的win.ini文件中讀取信息string
(1) 讀取字符串it
DWORD GetProfileString(io
LPCTSTR lpAppName, // 節名【不區分大小寫】class
LPCTSTR lpKeyName, // 鍵名,讀取該鍵的值【不區分大小寫】
LPCTSTR lpDefault, // 若指定的鍵不存在,該值做爲讀取的默認值
LPTSTR lpReturnedString, // 一個指向緩衝區的指針,接收讀取的字符串
DWORD nSize // 指定lpReturnedString指向的緩衝區的大小
)
如:
CString str;
::GetProfileString("Test","id","Error",str.GetBuffer(20),20);
(2) 讀取整數
UINT GetProfileInt(
LPCTSTR lpAppName, // 同上
LPCTSTR lpKeyName, // 同上
INT nDefault // 若指定的鍵名不存在,該值做爲讀取的默認值
)
2 從本身的ini文件中讀取信息
函數原型
DWORD GetPrivateProfileString(string lpszSection,string lpszKey,string lpszDefault, lpszReturnBuffer, cchReturnBuffer, lpszFile)
GetPrivateProfileString("DBInfo","IP","",IP.GetBuffer(MAX_PATH),MAX_PATH,iniFilePath);【測過】
CString IP, iniFilePath.
GetPrivateProfileString(Section name,key,"",key.GetBuffer(MAX_PATH),MAX_PATH,ini文件路徑+文件名);
其中第一個參數爲段名,第二個參數爲參數名稱,第三個參數爲沒找到key返回的默認值,第四個參數爲指定一個字串緩衝區,第五個參數爲指定裝載到lpReturnedString緩衝區的最大字符數量,第六個參數爲初始化文件的名字,如沒有指定一個完整路徑名,windows就在Windows目錄中查找文件。
__inline DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
)
DWORDGetPrivateProfileInt (string lpszSection,string lpszKey,long lpszDefault, lpszFile)爲初始化文件中指定的條目獲取一個整數值,參數列表跟上文取String一致,而第三個參數是若是找不到則返回一個默認的long類型的值。
特別注意的是 若是找到的數字不是一個合法的整數,函數會返回其中合法的一部分。好比「xyz=55zz」這個條目,函數返回55。
UINTGetPrivateProfileInt(
LPCTSTRlpAppName,
LPCTSTRlpKeyName,
INTnDefault,
LPCTSTRlpFileName
);
寫INI文件
1. 把信息寫入系統的win.ini文件
BOOL WriteProfileString(
LPCTSTR lpAppName, // 節的名字,是一個以0結束的字符串
LPCTSTR lpKeyName, // 鍵的名字,是一個以0結束的字符串。若爲NULL,則刪除整個節
LPCTSTR lpString // 鍵的值,是一個以0結束的字符串。若爲NULL,則刪除對應的鍵
)
2. 把信息寫入本身定義的.ini文件
BOOL WritePrivateProfileString(
LPCTSTR lpAppName, // 同上
LPCTSTR lpKeyName, // 同上
LPCTSTR lpString, // 同上
LPCTSTR lpFileName // 要寫入的文件的文件名。若該ini文件與程序在同一個目錄下,也可以使用相對
//路徑,不然須要給出絕度路徑。
)
如:
::WriteProfileString("Test","id","xym");
//在win.ini中建立一個Test節,並在該節中建立一個鍵id,其值爲xym
::WritePrivateProfileString("Test","id","xym","d:\\vc\\Ex1\\ex1.ini");
//在Ex1目錄下的ex1.ini中建立一個Test節,並在該節中建立一個鍵id,其值爲xym
//若Ex1.ini文件與讀寫該文件的程序在同一個目錄下,則上面語句也可寫爲:
::WritePrivateProfileString("Test","id","xym",".\\ex1.ini");
須要注意的是,C系列的語言中,轉義字符'\\'表示反斜線'\'。另外,當使用相對路徑時,\\前的.號不能丟掉了。