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

CStdioFile的用法詳細(xì)解析

 更新時(shí)間:2013年09月16日 09:35:48   作者:  
CStdioFile 不支持Duplicate,LockRange,和UnlockRange 這幾個(gè)CFile 函數(shù)。如果在CStdioFile 中調(diào)用了這幾個(gè)函數(shù),將會(huì)出現(xiàn)CNoSupported 異常

關(guān)于CStdioFile
CStdioFile繼承自CFile,一個(gè)CStdioFile 對(duì)象代表一個(gè)用運(yùn)行時(shí)函數(shù)fopen 打開的C 運(yùn)行時(shí)流式文件。

流式文件是被緩沖的,而且可以以文本方式(缺省)或二進(jìn)制方式打開。文本方式提供對(duì)硬回車—換行符對(duì)的特殊處理。當(dāng)你將一個(gè)換行符(0x0A)寫入一個(gè)文本方式的CStdioFile 對(duì)象時(shí),字節(jié)對(duì)(0x0D,0x0A)被發(fā)送給該文件。當(dāng)你讀一個(gè)文件時(shí),字節(jié)對(duì)(0x0D,0x0A)被翻譯為一個(gè)字節(jié)(0x0A)。

CStdioFile 不支持Duplicate,LockRange,和UnlockRange 這幾個(gè)CFile 函數(shù)。如果在CStdioFile 中調(diào)用了這幾個(gè)函數(shù),將會(huì)出現(xiàn)CNoSupported 異常。
CStdioFile::ReadString(LPTSTR lpsz, UINT nMax);

讀取一行文本到緩沖區(qū),遇到“0x0D,0x0A”時(shí)停止讀取,并且去掉硬回車“0x0D”,保留換行符“0x0A”,在字符串末尾添加“\0”(0x00)。nMax個(gè)字符里包含0x00這個(gè)字符。

分析如下:
1)如果nMax <= 字符數(shù),讀取(nMax-1)個(gè)字符 + 0x00
2)如果nMax    = 字符數(shù) + 1,讀取nMax個(gè)字符 + 0x00
3)如果nMax    > 字符數(shù),讀取nMax個(gè)字符 + 0x0A + 0x00

CStdioFile::ReadString(CString &rString);(重載)
讀取一行文本到rString,遇到回車換行符停止讀取。回車和換行符不讀到rString,而且末尾也沒有添加“\0”。
CStdioFile::WriteString( LPCTSTR lpsz );(不支持CString直接寫入)

將一個(gè)緩沖區(qū)中的數(shù)據(jù)寫入與CStdioFile 對(duì)象關(guān)聯(lián)的文件中。結(jié)束的空字符(“\0”)不被寫入該文件。lpsz 中的所有換行符都被以一個(gè)硬回車換行符對(duì)寫入該文件,即“\n”被轉(zhuǎn)化成“\r\n”寫入到文件里。

CFile的派生類CStdioFile提供了對(duì)文件進(jìn)行流式的操作功能。其中函數(shù)void CStdioFile::WriteString( LPCTSTR lpsz )寫入一個(gè)字符串,需要給字符串lpsz的末尾加上換行標(biāo)志”\r\n”;函數(shù)bool CStdioFile::ReadString(CString &rString )從文件中讀取一行,如果文件未讀完返回true,否則返回false。 

比如:寫入文件的例子

復(fù)制代碼 代碼如下:

//創(chuàng)建文件
CStdioFile file;
file.Open("ts.txt",CFile::modeCreate|CFile::modeWrite);
//寫入文件
CString str;
str.Format("%s\r\n","hello!I am talkingmute!");
file.Seek(0,CFile::end);
file.WriteString( str );
//關(guān)閉文件
file.Close();

比如:讀文件的例子
復(fù)制代碼 代碼如下:

CString strText = “”;
CString szLine = “”;
//打開文件
CStdioFile file;
file.Open("ts.txt",CFile::modeRead);
//逐行讀取字符串
while( file.ReadString( szLine ) )
{
strText += szLine;
}
MessageBox(strText);
//關(guān)閉文件
file.Close();

CStdioFile類的聲明保存再afx.h頭文件中。
CStdioFile類不支持CFile類中的Duplicate、LockRange、UnlockRange函數(shù),如果你使用了,會(huì)得到CNotSupportedException類的錯(cuò)誤。
CStringFile類默認(rèn)的是按照Text模式操作文件。CFile 類默認(rèn)的是按照二進(jìn)制模式操作文件。

這里大致說明一下二進(jìn)制模式和Text模式的區(qū)別。
二進(jìn)制模式:
對(duì)于一行的結(jié)尾我們必須輸入”\r\n”,才能表示回車換行的效果。

Text模式:”\r”回車的工作是自動(dòng)完成的,我們只需要寫入”\n”即可。所以我們?cè)偈褂梦谋灸J綍r(shí)要主要,當(dāng)我們從外部讀入文件時(shí),”\r\n”會(huì)被翻譯成”\n”,寫入文件時(shí),我們對(duì)于回車換行只需提供”\n”,即可,”\r\n”會(huì)被寫入到文件中。
m_pStream成員變量:
打開文件的指針。

構(gòu)造函數(shù):
CStdioFile();
CStdioFile(FILE *pOpenStream);
CStdioFile(LPCTSTR lpFileName, UINT nOpenFlags);
throw(CFileException);

FILE *pOpenStream:指的是c運(yùn)行函數(shù)fopen調(diào)用后返回的文件指針。
LPCTSTR lpFileName:指的是被打開的文件(絕對(duì)地址或相對(duì)地址)
UINT nOpenFlags:指的是CFile類中所描述的打開文件的方式。

virtual LPTSTR ReadString(LPTSTR lpsz, UINT nMax);
throw(CFileException);

如果使用該函數(shù)讀取文本文件,當(dāng)遇到”\r\n”,停止讀取,并去掉”\r”,保留”\n”,并在字符串尾部增加”\0”,nMax的長度包含有”\0”字符,

實(shí)際的分析如下:
如果nMax <= 字符數(shù),讀取(nMax-1)個(gè)字符+0x00;
如果nMax = 字符數(shù) + 1,讀取nMax個(gè)字符+0x00;
如果nMax > 字符數(shù),讀取nMax個(gè)字符+0x0A(”\n”) + 0x00;
如果文件有多行,則當(dāng)文件沒有讀完時(shí),返回NOT NULL,讀到文件尾,返回NULL。

BOOL ReadString(CString& rString);
throw(CFileException);

讀取一行文本到rString中,遇到回車換行符停止讀取,回車和換行符均不讀到rString中,尾部也不添加”0x00”。
如果文件有多行,則當(dāng)文件沒有讀完時(shí),返回TRUE,讀到文件尾,返回FALSE。

virtual void WriteString(LPTSTR lpsz);
throw(CFileException);

將緩沖區(qū)中的數(shù)據(jù)寫入到與CStdioFile對(duì)象相關(guān)聯(lián)的文件中,不支持CString類型數(shù)據(jù)寫入,結(jié)束的”\0”不被寫入到文件中,lpsz緩沖區(qū)中的所有

相關(guān)文章

  • C語言實(shí)題講解快速掌握單鏈表上

    C語言實(shí)題講解快速掌握單鏈表上

    單鏈表是后面要學(xué)的雙鏈表以及循環(huán)鏈表的基礎(chǔ),要想繼續(xù)深入了解數(shù)據(jù)結(jié)構(gòu)以及C語言,我們就要奠定好這塊基石!接下來就和我一起學(xué)習(xí)吧
    2022-04-04
  • solaris操作系統(tǒng)做c應(yīng)用程序開發(fā)步驟

    solaris操作系統(tǒng)做c應(yīng)用程序開發(fā)步驟

    solaris操作系統(tǒng)做c應(yīng)用程序開發(fā)步驟,大家參考使用吧
    2013-12-12
  • C++讀寫配置項(xiàng)的基本操作

    C++讀寫配置項(xiàng)的基本操作

    這篇文章主要介紹了C++讀寫配置項(xiàng)的基本操作,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2021-01-01
  • C/C++ 連接MySql數(shù)據(jù)庫的方法

    C/C++ 連接MySql數(shù)據(jù)庫的方法

    本文對(duì)如何使用MySql的API連接MySql數(shù)據(jù)庫,開發(fā)環(huán)境為VS2008,需要的朋友可以參考下
    2017-06-06
  • C語言編程數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)詳解小白篇

    C語言編程數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)詳解小白篇

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ),非常適合初學(xué)數(shù)據(jù)結(jié)構(gòu)的小白,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-09-09
  • C++常用的#include頭文件總結(jié)

    C++常用的#include頭文件總結(jié)

    這篇文章主要介紹了C++常用的#include頭文件,對(duì)初學(xué)者理解C++程序設(shè)計(jì)大有好處的相關(guān)資料
    2014-07-07
  • 在c和c++中實(shí)現(xiàn)函數(shù)回調(diào)

    在c和c++中實(shí)現(xiàn)函數(shù)回調(diào)

    如何在c和c++中實(shí)現(xiàn)函數(shù)回調(diào)呢?現(xiàn)在小編就和大家分享一下在c/c++中實(shí)現(xiàn)函數(shù)回調(diào)的示例代碼,需要的朋友可以參考下
    2013-07-07
  • C語言深入分析函數(shù)與宏的使用

    C語言深入分析函數(shù)與宏的使用

    C語言函數(shù)是一種函數(shù),用來編譯C語言,一般包括字符庫函數(shù),數(shù)學(xué)函數(shù),目錄函數(shù),進(jìn)程函數(shù),診斷函數(shù),操作函數(shù)等,宏在C語言中是一段有名稱的代碼片段。無論何時(shí)使用到這個(gè)宏的時(shí)候,宏的內(nèi)容都會(huì)被這段代碼替換掉
    2022-04-04
  • C++實(shí)現(xiàn)LeetCode(159.最多有兩個(gè)不同字符的最長子串)

    C++實(shí)現(xiàn)LeetCode(159.最多有兩個(gè)不同字符的最長子串)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(159.最多有兩個(gè)不同字符的最長子串),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 深入理解Qt 智能指針

    深入理解Qt 智能指針

    智能指針是一種特殊的指針,可以自行管理和釋放資源,防止內(nèi)存泄漏和懸掛指針,本文主要介紹了深入理解Qt 智能指針,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01

最新評(píng)論

清涧县| 微山县| 博乐市| 龙岩市| 长寿区| 汝城县| 南和县| 波密县| 郓城县| 怀来县| 徐汇区| 盐山县| 舟山市| 贵港市| 健康| 丰镇市| 鹿泉市| 盖州市| 青川县| 普宁市| 茂名市| 怀化市| 榆中县| 全椒县| 湖北省| 巴东县| 治县。| 阿瓦提县| 开远市| 北海市| 遂宁市| 勃利县| 中卫市| 日喀则市| 大荔县| 肥乡县| 汤原县| 玉田县| 迁西县| 中超| 依兰县|