最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于MFC實(shí)現(xiàn)單個(gè)文檔的文件讀寫

 更新時(shí)間:2022年07月08日 13:59:33   作者:霸道小明  
這篇文章主要為大家詳細(xì)介紹了如何基于MFC實(shí)現(xiàn)單個(gè)文檔的文件讀寫功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定幫助,感興趣的可以了解一下

寫文件

預(yù)期效果:

當(dāng)點(diǎn)擊確定時(shí)彈出“是否替換”提示框,指的是是否替換原來(lái)文本里的內(nèi)容。

1.添加相應(yīng)菜單以及ID

在菜單欄中添加相應(yīng)菜單及其ID,并在view.cpp中添加相應(yīng)的事件處理函數(shù)

2.完善相應(yīng)的事件響應(yīng)函數(shù)

這是我們寫文件函數(shù)代碼

void Cdraw3View::OnWriteFile()
{
    //要寫入的內(nèi)容
    CString str = _T("hello,world");
    //打開文件對(duì)話框,TRUE為讀,F(xiàn)ALSE為寫
    CFileDialog fileDlg(FALSE);
    //判斷用戶點(diǎn)擊的是確定還是取消
    if (IDOK == fileDlg.DoModal()) {
        //獲取對(duì)話框返回的文件名
        CString fileName = fileDlg.GetPathName();
        //打開文件,以寫入模式打開,如果不存在則創(chuàng)建
        CFile file(fileName, CFile::modeWrite | CFile::modeCreate);
        //寫入文件,第一個(gè)參數(shù)是寫入內(nèi)容,第二個(gè)參數(shù)是寫入內(nèi)容的長(zhǎng)度
        file.Write(str, str.GetLength());
        //關(guān)閉文件
        file.Close();
    }
}

3.進(jìn)行調(diào)試測(cè)試

該段代碼是往打開文件里寫入hello,world,但是執(zhí)行后我們打開文檔發(fā)現(xiàn)并沒(méi)有全部寫入,而是只寫了一部分

這是因?yàn)槲覀兙幾g器使用的是unicode編碼,而unicode編碼的英文字符是占兩個(gè)字節(jié),我們?cè)趯懞瘮?shù)里傳入的字符長(zhǎng)度只能向文件寫入一半的字符

4.根據(jù)測(cè)試結(jié)果進(jìn)行相應(yīng)的修改

更改方法可以是將長(zhǎng)度再×一個(gè)sizeof(TCHAR),TCHAR是MFC規(guī)定的一個(gè)類型定義,如果是unicode字符集,TCHAR是兩個(gè)字節(jié);其他模式則可能是一個(gè)字節(jié)

//寫入文件,第一個(gè)參數(shù)是寫入內(nèi)容,第二個(gè)參數(shù)是寫入內(nèi)容的長(zhǎng)度
file.Write(str, str.GetLength()*sizeof(TCHAR));

再次調(diào)試檢測(cè)

讀文件

預(yù)期效果

1.為讀文件添加事件響應(yīng)函數(shù)

2.完善事件響應(yīng)函數(shù)的代碼

void Cdraw3View::OnReadFile()
{
    CFileDialog fileDlg(TRUE);
    if (IDOK == fileDlg.DoModal()) {
        //獲得文件路徑
        CString path = fileDlg.GetPathName();
        //以只讀方式打開
        CFile file(path, CFile::modeRead);
        //設(shè)置一個(gè)讀取緩沖區(qū)
        TCHAR* pBuf;
        //獲得文件內(nèi)容長(zhǎng)度
        int cnt = file.GetLength();
        //根據(jù)對(duì)應(yīng)字符編碼模式下的sizeof(TCHAR),計(jì)算有多少個(gè)字符
        int chars = cnt / sizeof(TCHAR);
        //為緩沖區(qū)分配大小,+1操作是為了在結(jié)尾加一個(gè)結(jié)束符
        pBuf = new TCHAR[chars + 1];
        //第一個(gè)是將讀到的內(nèi)容放入的地方,第二個(gè)是讀取的長(zhǎng)度
        file.Read(pBuf, cnt);
        //結(jié)尾+一個(gè)結(jié)束符
        pBuf[chars] = 0;
        //將讀到的內(nèi)容彈出
        MessageBox(pBuf);
        //關(guān)閉文件
        file.Close();
        //文檔關(guān)閉后釋放申請(qǐng)的空間
        delete[] pBuf;
    }
 
}

3.調(diào)試測(cè)試 

到此這篇關(guān)于基于MFC實(shí)現(xiàn)單個(gè)文檔的文件讀寫的文章就介紹到這了,更多相關(guān)MFC文件讀寫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C/C++讀寫JSON數(shù)據(jù)的詳細(xì)過(guò)程記錄

    C/C++讀寫JSON數(shù)據(jù)的詳細(xì)過(guò)程記錄

    JSON文件無(wú)論是在web開發(fā)、客戶端開發(fā)、服務(wù)端等開發(fā)中都是應(yīng)用比較廣泛的的第一種輕量級(jí)數(shù)據(jù)交換格式,非常方便閱讀和編寫,下面這篇文章主要給大家介紹了關(guān)于C/C++讀寫JSON數(shù)據(jù)的詳細(xì)過(guò)程,需要的朋友可以參考下
    2023-04-04
  • 淺談c++性能測(cè)試工具之計(jì)算時(shí)間復(fù)雜度

    淺談c++性能測(cè)試工具之計(jì)算時(shí)間復(fù)雜度

    有時(shí)候除了測(cè)量算法的具體性能指數(shù),我們也會(huì)希望測(cè)試出算法的時(shí)間復(fù)雜度,以便我們對(duì)待測(cè)試的算法的性能有一個(gè)更加直觀的了解。本文將介紹c++性能測(cè)試工具之計(jì)算時(shí)間復(fù)雜度。
    2021-06-06
  • 詳解Qt如何實(shí)現(xiàn)一鍵加載qm文件

    詳解Qt如何實(shí)現(xiàn)一鍵加載qm文件

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)一鍵加載qm文件的相關(guān)方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下
    2024-04-04
  • OpenCV實(shí)現(xiàn)鼠標(biāo)框選并顯示框選區(qū)域

    OpenCV實(shí)現(xiàn)鼠標(biāo)框選并顯示框選區(qū)域

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)鼠標(biāo)框選并顯示框選區(qū)域,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 匯編語(yǔ)言rep movsd 的使用詳解

    匯編語(yǔ)言rep movsd 的使用詳解

    rep movsd 每次ecx!=0便執(zhí)行movsd ,然后ecx=ecx-1 movsd移動(dòng)ds:[si] 到es:[di],在32位匯編下可以用esi代替si,edi代替di
    2013-09-09
  • VS中scanf為何會(huì)報(bào)錯(cuò)詳解

    VS中scanf為何會(huì)報(bào)錯(cuò)詳解

    在我們剛使用vs時(shí),在使用scanf函數(shù)時(shí)常會(huì)遇到報(bào)錯(cuò)提醒,下面這篇文章主要給大家介紹了關(guān)于VS中scanf為何會(huì)報(bào)錯(cuò)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • c++11?類中關(guān)于default、explict、implicit、noexcept、final的詳解

    c++11?類中關(guān)于default、explict、implicit、noexcept、final的詳解

    這篇文章主要介紹了c++11?類中關(guān)于default、explict、implicit、noexcept、final的詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • 編寫C++程序使DirectShow進(jìn)行視頻捕捉

    編寫C++程序使DirectShow進(jìn)行視頻捕捉

    這篇文章主要介紹了如何編寫C++程序來(lái)使DirectShow進(jìn)行視頻捕捉的方法,DirectShow是微軟公司在ActiveMovie和Video for Windows的基礎(chǔ)上推出的新一代基于COM(Component Object Model)的流媒體處理的開發(fā)包,要的朋友可以參考下
    2016-03-03
  • EasyC++單獨(dú)編譯

    EasyC++單獨(dú)編譯

    這篇文章主要介紹了EasyC++單獨(dú)編譯,在上一篇當(dāng)中,我們編寫好了頭文件coordin.h,現(xiàn)在我們要完成它的實(shí)現(xiàn)。需要的小伙伴可以先學(xué)習(xí)上一篇內(nèi)容然后一起與小編一起進(jìn)入本篇內(nèi)容一起學(xué)習(xí)吧
    2021-12-12
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之雙向循環(huán)鏈表的實(shí)例

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之雙向循環(huán)鏈表的實(shí)例

    這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之雙向循環(huán)鏈表的實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06

最新評(píng)論

阿瓦提县| 漳平市| 锡林浩特市| 西充县| 芮城县| 望奎县| 方正县| 伊金霍洛旗| 上蔡县| 万全县| 湘潭市| 保亭| 安化县| 封开县| 澎湖县| 博兴县| 城口县| 扶余县| 潼南县| 平泉县| 浮山县| 海门市| 图木舒克市| 台东市| 大英县| 游戏| 汉阴县| 洱源县| 噶尔县| 大足县| 广东省| 莱西市| 阿合奇县| 澄迈县| 博湖县| 莒南县| 陕西省| 克东县| 利川市| 弥勒县| 弥渡县|