日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

VC中操作INI文件的API

發布時間:2024/4/11 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC中操作INI文件的API 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

VC中操作INI文件的API

(1)操作系統配置文件Win.ini的函數:

函數名

功能

GetProfileSection

讀取win.ini中指定節lpAppName中所有鍵名及其值。lpReturnedString字符串形式如下:

Key1=Value1/0Key2=Value2/0KeyN=ValueN/0/0

GetProfileString

讀取win.ini中指定節lpAppName中鍵名為lpKeyName對應變量的字符串值。

GetProfileInt

讀取win.ini中指定節lpAppName中鍵名為lpKeyName對應變量的整數值。

?

?

WriteProfileSection

寫(替換)win.ini中指定節lpAppName中的鍵值。

lpString字符串形式同GetProfileSection中的lpReturnedString。

WriteProfileString

寫(替換)win.ini中指定節lpAppName中鍵名為lpKeyName對應變量的字符串值。

?

(2)操作用戶自定義配置文件(PrivateProfile.ini)的函數:

函數名

功能

GetPrivateProfileSectionNames

讀取lpFileName指定的配置文件中所有的節名。lpszReturnBuffer字符串形式如下:

Section1/0Section2/0…SectionN/0/0

GetPrivateProfileSection

同GetProfileSection

GetPrivateProfileString

同GetProfileString

GetPrivateProfileInt?????

同GetProfileInt

GetPrivateProfileStruct

須同WritePrivateProfileStruct配套使用。

?

?

WritePrivateProfileSection

同WriteProfileSection

WritePrivateProfileString

同WriteProfileString

WritePrivateProfileStruct

不常用。

注意:

1)使用得最頻繁的是?GetPrivateProfileString?和?WritePrivateProfileString,沒有WriteProfileInt/WritePrivateProfileInt函數。

2Get系列讀取節鍵值,如果文件路徑有誤或節鍵名不對則返回設定的默認值

3)訪存自定義配置文件時,文件路徑lpFileName必須完整,文件名前面的各級目錄必須存在。如果lpFileName文件路徑不存在,則函數返回FALSEGetLastError()?=?ERROR_PATH_NOT_FOUND1.如果路徑正確,但是文件不存在,則該函數將先創建該文件。2.如果路徑及文件存在,則在現有ini文件基礎上進行讀寫。3.如果?lpFileName?只指定文件名而沒有路徑的話,調用API將會去?Windows?的安裝目錄去查找而不會在當前目錄查找。

4)要對調用API的模塊(exe)所在目錄下進行配置文件操作,可使用形如.//config.ini的相對路徑,注意轉義符。

5)調用WritePrivateProfileSection,若參數三?lpStringNULL,則可將對應section的全部內容清空;調用WritePrivateProfileString,若參數三?lpStringNULL,則可將對應key刪除。

?

鑒于XML的樹形描述層次結構性清晰,現在很多軟件都大面積使用XML文件進行配置,如QQ的全局配置文件C:/Program?Files/Tencent/QQ/gf-config.xml。java程序的配置文件基本都使用XML格式,C++中并沒有操作XML文件的標準庫。

//讀寫系統的INI

Windows都有C:\Windows\win.ini??本次操作就是讀寫此文件

1.?把信息寫入系統的win.ini文件

BOOL?WriteProfileString(

??????LPCTSTR?lpAppName,??//節的名字,是一個以0結束的字符串

??????LPCTSTR?lpKeyName,??//鍵的名字,是一個以0結束的字符串。若為NULL,則刪除整個節

??????LPCTSTR?lpString??????//鍵的值,是一個以0結束的字符串。若為NULL,則刪除對應的鍵

)

//win.ini中創建一個Test節,并在該節中創建一個鍵id,其值為xym

::WriteProfileString("Test","id","xym");

2.?讀取字符串

DWORD?GetProfileString(

??????LPCTSTR?lpAppName,?????????//?節名

??????LPCTSTR?lpKeyName,?????????//?鍵名,讀取該鍵的值

??????LPCTSTR?lpDefault,???????????//?若指定的鍵不存在,該值作為讀取的默認值

??????LPTSTR?lpReturnedString,??????//?一個指向緩沖區的指針,接收讀取的字符串

??????DWORD?nSize????????????????//?指定lpReturnedString指向的緩沖區的大小

)

CString?str;

::GetProfileString("Test","id","Error",str.GetBuffer(20),20);

3.?讀取整數

UINT?GetProfileInt(

??????LPCTSTR?lpAppName,??????//?節名

??????LPCTSTR?lpKeyName,??????//?鍵名,讀取該鍵的值

??????INT?nDefault??????????????//?若指定的鍵名不存在,該值作為讀取的默認值

)

::WriteProfileString("Test","age","25");

int?age;

age=::GetProfileInt("Test","age",0);

4.?刪除鍵(值)

::WriteProfileString("Test",NULL,NULL);????//刪除win.ini中的Test

::WriteProfileString("Test","id",NULL);??????//刪除win.ini中的id

5.?寫值

BOOL?WriteProfileSection(?LPCTSTR?lpAppName,?//?section?name?LPCTSTR?lpString?//?data?buffer);

WriteProfileSection("1234567890","fdsgfdsg");

結果:

[1234567890]

Fdsgfdsg

6.?讀值

DWORD?GetProfileSection(?LPCTSTR?lpAppName,?//?section?name?LPTSTR?lpReturnedString,?//?return?buffer?DWORD?nSize?//?size?of?return?buffer);

CString?str;

GetProfileSection("1234567890",str.GetBuffer(256),256);

///讀寫用戶自定義的INI

1.?把信息寫入用戶的win.ini文件

BOOL?WritePrivateProfileString(

??????LPCTSTR?lpAppName,??????//?節的名字,是一個以0結束的字符串

??????LPCTSTR?lpKeyName,??????//?鍵的名字,是一個以0結束的字符串。若為NULL,則刪除整個節

??????LPCTSTR?lpString,?????????//?鍵的值,是一個以0結束的字符串。若為NULL,則刪除對應的鍵

??????LPCTSTR?lpFileName??????//?要寫入的文件的文件名。若該ini文件與程序在同一個目錄下,也可使用相對

???????????? ???//路徑,否則需要給出絕度路徑。

)

::WritePrivateProfileString("Test","id","xym","d://vc//Ex1//ex1.ini");

//Ex1目錄下的ex1.ini中創建一個Test節,并在該節中創建一個鍵id,其值為xym

?

//Ex1.ini文件與讀寫該文件的程序在同一個目錄下,則上面語句也可寫為:

::WritePrivateProfileString("Test","id","xym",".//ex1.ini");

//::WritePrivateProfileString("Test","id","xym","ex1.ini");這樣寫的話會在windows目錄下生成配置文件

2.?讀取字符串

DWORD?GetPrivateProfileString(

??????LPCTSTR?lpAppName,???????????//??節名

??????LPCTSTR?lpKeyName,???????????//?鍵名,讀取該鍵的值

??????LPCTSTR?lpDefault,?????????????//?若指定的鍵不存在,該值作為讀取的默認值

??????LPTSTR?lpReturnedString,????????//?一個指向緩沖區的指針,接收讀取的字符串

??????DWORD?nSize,?????????????????//?指定lpReturnedString指向的緩沖區的大小

??????LPCTSTR?lpFileName???????????//?讀取信息的文件名。若該ini文件與程序在同一個目錄下,也可使用相?????

????????????????????????????????????//對路徑,否則需要給出絕度路徑。

)

CString?str;

::GetPrivateProfileString("Test","id","Error",str.GetBuffer(20),20".//ex1.ini");

或:

::GetPrivateProfileString("Test","id","Error",str.GetBuffer(20),20"d://vc//Ex1//ex1.ini");

3.?讀取整數

UINT?GetPrivateProfileInt(

??????LPCTSTR?lpAppName,??????//?節的名字,是一個以0結束的字符串

??????LPCTSTR?lpKeyName,??????//?鍵名,讀取該鍵的值

??????INT?nDefault,??????????????//?若指定的鍵名不存在,該值作為讀取的默認值

??????LPCTSTR?lpFileName???????//?要寫入的文件的文件名。若該ini文件與程序在同一個目錄下,也可使用相對

???//對路徑,否則需要給出絕度路徑。

)

::WritePrivateProfileString("Test","age","25",".//ex1.ini");

int?age;

age=::GetPrivateProfileInt("Test","age",0,".//ex1.ini");

4.?刪除鍵(值)

::WritePrivateProfileString("Test",NULL,NULL,".//ex1.ini");??????//刪除ex1.ini中的Test

::WritePrivateProfileString("Test","id",NULL,".//ex1.ini");???????//刪除ex1.ini中的id

5.寫值

BOOL?WritePrivateProfileSection(?LPCTSTR?lpAppName,?//?section?name?LPCTSTR?lpString,?//?data?LPCTSTR?lpFileName?//?file?name?);

WritePrivateProfileSection("1234567890","fdsgfdsg",".//表情協議.ini");

結果:

[1234567890]

Fdsgfdsg

6.?讀值

DWORD?GetPrivateProfileSection(?LPCTSTR?lpAppName,?//?section?name?LPTSTR?lpReturnedString,?//?return?buffer?DWORD?nSize,?//?size?of?return?buffer?LPCTSTR?lpFileName?//?initialization?file?name?);

CString?str;

GetPrivateProfileSection("1234567890",str.GetBuffer(256),256,".//表情協議.ini");

7.GetPrivateProfileSectionNames函數

DWORD?GetPrivateProfileSectionNames(

??????LPTSTR?lpszReturnBuffer,?????????//?指向一個緩沖區,用來保存返回的所有節名

??????DWORD?nSize,??????????????????//?參數lpszReturnBuffer的大小

??????LPCTSTR?lpFileName????????????//?文件名,若該ini文件與程序在同一個目錄下,

????????????????????????????????????//也可使用相對路徑,否則需要給出絕度路徑

)

CString?str;

GetPrivateProfileSectionNames(str.GetBuffer(256),256,".\\表情協議.ini");

?

?

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的VC中操作INI文件的API的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。