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

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

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

    codefans

    導航

    <2013年7月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    統計

    常用鏈接

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

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

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

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

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

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

      回復  更多評論   


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


    網站導航:
     
    主站蜘蛛池模板: 日韩午夜理论免费TV影院| 国产在线观看免费av站| 国产桃色在线成免费视频| 91大神亚洲影视在线| 日韩视频免费在线观看| 亚洲精品日韩中文字幕久久久| 日本免费人成网ww555在线| 亚洲欧洲一区二区| 在线日本高清免费不卡| 亚洲首页在线观看| 国国内清清草原免费视频99| 亚洲综合偷自成人网第页色| 全免费a级毛片免费看无码| 国产精品亚洲专一区二区三区| 国产乱辈通伦影片在线播放亚洲 | 日产乱码一卡二卡三免费| 亚洲人成网站在线在线观看| 国产男女猛烈无遮挡免费网站 | 国产福利免费视频 | 波多野结衣久久高清免费 | 男女猛烈激情xx00免费视频| 亚洲人午夜射精精品日韩| 免费无码AV一区二区| 日本红怡院亚洲红怡院最新| 日本高清在线免费| 国产精品亚洲一区二区三区在线观看 | 两个人看www免费视频| 亚洲精品91在线| 国产成人免费a在线视频app| 久久精品免费网站网| 亚洲高清视频免费| 国产成人免费片在线视频观看| 曰批全过程免费视频在线观看无码 | 四虎永久免费观看| 无码A级毛片免费视频内谢| 亚洲精品国产综合久久久久紧| 亚洲一区二区三区影院| 国产成人免费网站| 99久久成人国产精品免费| 亚洲精品一二三区| 亚洲成年轻人电影网站www|