麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > C > 正文

詳細(xì)解析CStdioFile的操作方法

2020-02-24 14:27:38
字體:
供稿:網(wǎng)友

cstdiofile是cfile的派生,它是流式傳輸文件,對(duì)讀取和寫入文本文件很有用,那么詳細(xì)解析CStdioFile的操作方法大家了解嗎?下面武林技術(shù)頻道小編為大家細(xì)細(xì)道來。

關(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。?

比如:寫入文件的例子

?

//創(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();


比如:讀文件的例子

?

?

?


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的長(zhǎng)度包含有”/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)于詳細(xì)解析CStdioFile的操作方法,現(xiàn)在你了解了吧?歡迎你隨時(shí)來關(guān)注武林技術(shù)頻道,最專業(yè)的技術(shù)知識(shí)盡在這里。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: av在线一区二区三区四区 | 日韩激情一区二区三区 | av成人在线免费观看 | 国产免费小视频在线观看 | 亚欧在线免费观看 | 一级国产精品一级国产精品片 | 激情久久精品 | 欧美aaaaaaaa| 九九热九九热 | 国产精品久久久久久婷婷天堂 | 日韩一级成人 | 亚洲人成网在线观看 | 97香蕉超级碰碰久久免费软件 | 精品国产观看 | 色淫视频 | www.99av| 黄色av免费网站 | 久久久婷婷一区二区三区不卡 | 男女污视频在线观看 | 日日噜噜噜噜久久久精品毛片 | 国产一国产一级毛片视频在线 | 九九黄色 | 久久久99精品视频 | 亚洲成人午夜精品 | 久久国产精品久久精品国产演员表 | 欧美成人福利 | 欧美综合在线观看 | 一日本道久久久精品国产 | www久久艹 | 亚洲第一页夜 | 亚洲视频高清 | 日本成人一二三区 | 正在播放91 | 国产一精品一av一免费爽爽 | 亚洲特黄妇女高潮 | 精品一区二区久久久久久按摩 | 伊人午夜视频 | 久久精品中文字幕一区二区 | 亚洲3p激情在线观看 | 激情视频在线播放 | 看av网址|