<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    codefans

    導航

    <2015年2月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    1234567

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    程序設計鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    在VC++中讀寫INI文件

      在我們寫的程序當中,總有一些配置信息需要保存下來,以便完成程序的功能,最簡單的辦法就是將這些信息寫入INI文件中,程序初始化時再讀入.具體應用如下:

      一.將信息寫入.INI文件中.

      1.所用的WINAPI函數原型為:

    BOOL WritePrivateProfileString(
    LPCTSTR lpAppName,
    LPCTSTR lpKeyName,
    LPCTSTR lpString,
    LPCTSTR lpFileName
    );

      其中各參數的意義:

       LPCTSTR lpAppName 是INI文件中的一個字段名.

       LPCTSTR lpKeyName 是lpAppName下的一個鍵名,通俗講就是變量名.

       LPCTSTR lpString 是鍵值,也就是變量的值,不過必須為LPCTSTR型或CString型的.

       LPCTSTR lpFileName 是完整的INI文件名.

      2.具體使用方法:設現有一名學生,需把他的姓名和年齡寫入 c:\stud\student.ini 文件中.

    CString strName,strTemp;
    int nAge;
    strName="張三";
    nAge=12;
    ::WritePrivateProfileString("StudentInfo","Name",strName,"c:\\stud\\student.ini");

      此時c:\stud\student.ini文件中的內容如下:

       [StudentInfo]
       Name=張三

      3.要將學生的年齡保存下來,只需將整型的值變為字符型即可:

    strTemp.Format("%d",nAge);
    ::WritePrivateProfileString("StudentInfo","Age",strTemp,"c:\\stud\\student.ini");

     二.將信息從INI文件中讀入程序中的變量.

      1.所用的WINAPI函數原型為:

    DWORD GetPrivateProfileString(
    LPCTSTR lpAppName,
    LPCTSTR lpKeyName,
    LPCTSTR lpDefault,
    LPTSTR lpReturnedString,
    DWORD nSize,
    LPCTSTR lpFileName
    );

      其中各參數的意義:

       前二個參數與 WritePrivateProfileString中的意義一樣.

       lpDefault : 如果INI文件中沒有前兩個參數指定的字段名或鍵名,則將此值賦給變量.

       lpReturnedString : 接收INI文件中的值的CString對象,即目的緩存器.

       nSize : 目的緩存器的大小.

       lpFileName : 是完整的INI文件名.

      2.具體使用方法:現要將上一步中寫入的學生的信息讀入程序中.

    CString strStudName;
    int nStudAge;
    GetPrivateProfileString("StudentInfo","Name","默認姓名",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"c:\\stud\\student.ini");

      執行后 strStudName 的值為:"張三",若前兩個參數有誤,其值為:"默認姓名".

      3.讀入整型值要用另一個WINAPI函數:

    UINT GetPrivateProfileInt(
    LPCTSTR lpAppName,
    LPCTSTR lpKeyName,
    INT nDefault,
    LPCTSTR lpFileName
    );

      這里的參數意義與上相同.使用方法如下:

    nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c:\\stud\\student.ini");


     三.循環寫入多個值,設現有一程序,要將最近使用的幾個文件名保存下來,具體程序如下:

      1.寫入:

    CString strTemp,strTempA;
    int i;
    int nCount=6;
    file://共有6個文件名需要保存
    for(i=0;i {strTemp.Format("%d",i);
    strTempA=文件名;
    file://文件名可以從數組,列表框等處取得.
    ::WritePrivateProfileString("UseFileName","FileName"+strTemp,strTempA,
    "c:\\usefile\\usefile.ini");
    }
    strTemp.Format("%d",nCount);
    ::WritePrivateProfileString("FileCount","Count",strTemp,"c:\\usefile\\usefile.ini");
    file://將文件總數寫入,以便讀出.

      2.讀出:

    nCount=::GetPrivateProfileInt("FileCount","Count",0,"c:\\usefile\\usefile.ini");
    for(i=0;i {strTemp.Format("%d",i);
    strTemp="FileName"+strTemp;
    ::GetPrivateProfileString("CurrentIni",strTemp,"default.fil", strTempA.GetBuffer(MAX_PATH),MAX_PATH,"c:\\usefile\\usefile.ini");

    file://使用strTempA中的內容.

    }

      補充四點:

       1.INI文件的路徑必須完整,文件名前面的各級目錄必須存在,否則寫入不成功,該函數返回 FALSE 值.

       2.文件名的路徑中必須為 \\ ,因為在VC++中, \\ 才表示一個 \ .

       3.也可將INI文件放在程序所在目錄,此時 lpFileName 參數為: ".\\student.ini".

       4.從網頁中粘貼源代碼時,最好先粘貼至記事本中,再往VC中粘貼,否則易造成編譯錯誤,開始時我也十分不解,好好的代碼怎么就不對呢?后來才找到這個方法.還有一些代碼中使用了全角字符如:<,\等,也會
    造成編譯錯誤.

    posted on 2005-08-05 10:39 春雷的博客 閱讀(12984) 評論(2)  編輯  收藏

    評論

    # re: 在VC++中讀寫INI文件 2013-07-10 11:50 C++Lover

    謝謝指教。  回復  更多評論   

    # re: 在VC++中讀寫INI文件 2015-02-04 16:09 dasjfoais

     我記得小的時候經歷過離奇般的童話故事。這是在小說中會發生的事情卻降臨在我的身上,我也不想不到,一切都是如此的離奇。

      我們是很要好的伙伴,小的時候,根本不懂什么叫男女有別,只知道,我喜歡和他玩,家在海邊,我們常常會去那海邊,在那里建我們的城堡沙雕。過我們的王子與公主的生活,更實在的說是過家家九。這是多么簡單的童年,可是,時間可以培養感情,我們形影不離。有時候,大人還會拿我們開玩笑,說多么像對小兩口??墒俏覀冎g是那種十分單純的愛。我們只知道,我們在一起,我們找到的是快樂……

      可是在我8歲那年,父母因為要掉離到離這邊很遠很遠的鄉鎮。我們不得不也跟著走,我記得哪天,他哭著送我走的,而我卻一言不發…。他給了我一海螺。,我平靜的拿過,他告訴我,把海螺放在耳邊就能聽到海的呼喚,他等我回來……我聽完這話后,也哭了:”我會回來的…”車開了,他在背后奔跑著。我在車內揮舞著手…

      今年我回去了,可是我沒有去找他,只是遠遠的忘著他。他變了,變得讓人覺得剛強。不再是那個愛哭的小男孩,不知道他是否還記得我說過我會回來,他說過要我一定要回來。??墒侨缃竦倪@些都已經不重要了。我相信如今的這些已經成為我們心中彼此的期待,何必打破海螺里的平靜,或許,這樣,在彼此的心目中都是如此的完美…

      我漫步在海邊,可是如今的我怎么堆也堆不起沙雕。。我蹲在海邊哭了。。海水不知趣的潑在我的臉上,我站起來,看見了他…。。可是,我們就這樣插身而過了,他只很平靜的回過頭來望了望我,皺了皺眉而已…我不知道他是想起我了,還是覺得一個傻姑娘在海邊哭泣很奇怪…。

      我蹲在那里很久很久,靜靜的看著他撿起一個海螺,走了…海風吹呀吹,把我的記憶吹走了。如今的你是否也在想著我?

      我把小時候那單純的感情裝在海螺里拋入了大海,我們的起源在大海,結束也在大海,大海見證了曾經有兩個兩小無猜的孩子,在這別建他們的碉堡,曾在這邊許諾會回來。。我回來了,只不過我們擦身而過而已。。

      你知道嗎?!我信守了承諾。。我有回來,不知你知道不知道。

      回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲五月午夜免费在线视频| 亚洲欧好州第一的日产suv| 亚洲妇女无套内射精| 日韩精品无码免费专区午夜不卡| 成人人观看的免费毛片| 亚洲高清资源在线观看| 免费国产黄网站在线观看| 国产成人毛片亚洲精品| 国产亚洲精品欧洲在线观看| 丁香花免费高清视频完整版| 老司机亚洲精品影院| 国产v精品成人免费视频400条| 亚洲欧美aⅴ在线资源| 亚洲成av人片一区二区三区| 无码 免费 国产在线观看91| 亚洲一区精品无码| 99久久免费看国产精品| 亚洲国产成人99精品激情在线| 成人毛片免费网站| 最好2018中文免费视频| 亚洲AV永久精品爱情岛论坛| 成人浮力影院免费看| 最新亚洲人成无码网站| 中文字幕亚洲一区| 最近中文字幕mv免费高清在线| 亚洲成a人片在线看| 国产免费怕怕免费视频观看| 免费毛片在线看不用播放器| 亚洲国语在线视频手机在线| 免费视频中文字幕| 两个人www免费高清视频| 亚洲精品在线免费观看视频| 国产美女无遮挡免费视频| 亚洲免费无码在线| 亚洲一区二区三区不卡在线播放| 国产成人免费网站在线观看| 成人黄网站片免费视频| 亚洲中文字幕乱码一区| 亚洲国产精品无码久久久不卡 | 亚洲一区二区三区久久| 亚洲精品国产va在线观看蜜芽|