最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C++文件類(文件流類)及用法詳解

2023-04-03 13:27 作者:c語(yǔ)言-小新  | 我要投稿

《C++輸入輸出流》一章中講過(guò),重定向后的 cin 和 cout 可分別用于讀取文件中的數(shù)據(jù)和向文件中寫(xiě)入數(shù)據(jù)。除此之外,C++ 標(biāo)準(zhǔn)庫(kù)中還專門(mén)提供了 3 個(gè)類用于實(shí)現(xiàn)文件操作,它們統(tǒng)稱為文件流類,這 3 個(gè)類分別為:

  • ifstream:專用于從文件中讀取數(shù)據(jù);

  • ofstream:專用于向文件中寫(xiě)入數(shù)據(jù);

  • fstream:既可用于從文件中讀取數(shù)據(jù),又可用于向文件中寫(xiě)入數(shù)據(jù)。

值得一提的是,這 3 個(gè)文件流類都位于 <fstream> 頭文件中,因此在使用它們之前,程序中應(yīng)先引入此頭文件。

這 3 個(gè)文件流類的繼承關(guān)系,如圖 1 所示。


圖1:C++類庫(kù)中的流類


可以看到,ifstream 類和 fstream 類是從 istream 類派生而來(lái)的,因此 ifstream 類擁有 istream 類的全部成員方法。同樣地,ofstream 和 fstream 類也擁有 ostream 類的全部成員方法。這也就意味著,istream 和 ostream 類提供的供 cin 和 cout 調(diào)用的成員方法,也同樣適用于文件流。并且這 3 個(gè)類中有些成員方法是相同的,比如?operator <<()、operator >>()、peek()、ignore()、getline()、get() 等。

值得一提的是,和 <iostream> 頭文件中定義有 ostream 和 istream 類的對(duì)象 cin 和 cout 不同,<fstream> 頭文件中并沒(méi)有定義可直接使用的 fstream、ifstream 和 ofstream 類對(duì)象。因此,如果我們想使用該類操作文件,需要自己創(chuàng)建相應(yīng)類的對(duì)象。

為什么 C++ 標(biāo)準(zhǔn)庫(kù)不提供現(xiàn)成的類似 fin 或者 fout 的對(duì)象呢?其實(shí)很簡(jiǎn)單,文件輸入流和輸出流的輸入輸出設(shè)備是硬盤(pán)中的文件,硬盤(pán)上有很多文件,到底應(yīng)該使用哪一個(gè)呢?所以,C++ 標(biāo)準(zhǔn)庫(kù)就把創(chuàng)建文件流對(duì)象的任務(wù)交給用戶了。

fstream 類擁有 ifstream 和 ofstream 類中所有的成員方法,表 2 羅列了 fstream 類一些常用的成員方法。

表2:fstream類常用成員方法成員方法名適用類對(duì)象功? ?能open()fstream
ifstream
ofstream打開(kāi)指定文件,使其與文件流對(duì)象相關(guān)聯(lián)。is_open()檢查指定文件是否已打開(kāi)。close()關(guān)閉文件,切斷和文件流對(duì)象的關(guān)聯(lián)。swap()交換 2 個(gè)文件流對(duì)象。operator>>fstream
ifstream重載 >> 運(yùn)算符,用于從指定文件中讀取數(shù)據(jù)。gcount()返回上次從文件流提取出的字符個(gè)數(shù)。該函數(shù)常和 get()、getline()、ignore()、peek()、read()、readsome()、putback() 和 unget() 聯(lián)用。get()從文件流中讀取一個(gè)字符,同時(shí)該字符會(huì)從輸入流中消失。getline(str,n,ch)從文件流中接收 n-1 個(gè)字符給 str 變量,當(dāng)遇到指定 ch 字符時(shí)會(huì)停止讀取,默認(rèn)情況下 ch 為 '\0'。ignore(n,ch)從文件流中逐個(gè)提取字符,但提取出的字符被忽略,不被使用,直至提取出 n 個(gè)字符,或者當(dāng)前讀取的字符為 ch。peek()返回文件流中的第一個(gè)字符,但并不是提取該字符。putback(c)將字符 c 置入文件流(緩沖區(qū))。operator<<fstream
ofstream重載 << 運(yùn)算符,用于向文件中寫(xiě)入指定數(shù)據(jù)。put()向指定文件流中寫(xiě)入單個(gè)字符。write()向指定文件中寫(xiě)入字符串。tellp()用于獲取當(dāng)前文件輸出流指針的位置。seekp()設(shè)置輸出文件輸出流指針的位置。flush()刷新文件輸出流緩沖區(qū)。good()fstream
ofstream
ifstream操作成功,沒(méi)有發(fā)生任何錯(cuò)誤。eof()到達(dá)輸入末尾或文件尾。

表 2 中僅列舉的了部分常用的成員方法,更詳細(xì)的介紹,讀者可查看?C++標(biāo)準(zhǔn)庫(kù)手冊(cè)。

這里就以 fstream 類舉例,簡(jiǎn)單演示一下如何使用表 2 中的一些成員方法操作文件:


執(zhí)行程序,該程序同目錄下會(huì)生成一個(gè) test.txt 文件,該文件的內(nèi)容為:

http://c.biancheng.net/cplus/

注意,初學(xué)者只需借助注釋看懂程序執(zhí)行流程即可,具體的代碼實(shí)現(xiàn)不必深究,后續(xù)章節(jié)會(huì)做詳細(xì)講解。

值得一提的是,無(wú)論是讀取文件中的數(shù)據(jù),還是向文件中寫(xiě)入數(shù)據(jù),最先要做的就是調(diào)用 open() 成員方法打開(kāi)文件。同時(shí)在操作文件結(jié)束后,還必須要調(diào)用 close() 成員方法關(guān)閉文件。關(guān)于如何使用 open() 函數(shù)打開(kāi)一個(gè)文件,下一節(jié)會(huì)做詳細(xì)介紹。


C++文件類(文件流類)及用法詳解的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
水富县| 固安县| 阳西县| 天台县| 高邮市| 蕉岭县| 耿马| 东城区| 新建县| 阿尔山市| 仪征市| 达州市| 沂水县| 山西省| 古丈县| 霍林郭勒市| 丘北县| 通化县| 福泉市| 桃园市| 从江县| 全椒县| 嘉善县| 延安市| 徐闻县| 石台县| 阿勒泰市| 长垣县| 阿城市| 师宗县| 广德县| 沙田区| 夏津县| 清新县| 天等县| 岐山县| 当阳市| 崇明县| 永春县| 凤庆县| 图片|