流類庫和輸入輸出(C程序設(shè)計(jì)(第2版)吳乃陵).ppt
《流類庫和輸入輸出(C程序設(shè)計(jì)(第2版)吳乃陵).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《流類庫和輸入輸出(C程序設(shè)計(jì)(第2版)吳乃陵).ppt(21頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第九章流類庫和輸入/輸出,文件是存儲(chǔ)在磁盤、磁帶等外部設(shè)備上數(shù)據(jù)集合,每一個(gè)文件都必須有一個(gè)唯一名字。使用文件前必須首先打開文件,使用后必須關(guān)閉文件。對(duì)文件的操作時(shí)通過文件流類完成的。文件流類在流與文件之間建立連接,使用這些文件流類必須用#include編譯指令將fstream.h包含進(jìn)來。數(shù)據(jù)從一個(gè)對(duì)象到另一個(gè)對(duì)象的傳送被抽象為“流”。數(shù)據(jù)的輸入/輸出就是通過輸入/輸出流來實(shí)現(xiàn)的。流是一種抽象的概念,負(fù)責(zé)在數(shù)據(jù)的產(chǎn)生者和數(shù)據(jù)的使用者之間建立聯(lián)系,并管理數(shù)據(jù)的流動(dòng)。,,,9.1C++的基本流類體系,流類體系:以抽象類模板ios為基類,流類模板派生體系見圖。整個(gè)流類模板體系的標(biāo)準(zhǔn)I/O在頭文件中說明,它包含頭文件、、和。而輸入輸出文件流部分在頭文件中說明。,主要輸入/輸出流模板層次,,,,9.2文件的輸入與輸出,本節(jié)中文件指的是磁盤文件。C++根據(jù)文件(file)內(nèi)容的數(shù)據(jù)格式,可分為兩類:二進(jìn)制文件和文本文件。文本文件由字符序列組成,也稱ASCII碼文件,在文本文件中存取的最小信息單位為字符(character),而二進(jìn)制文件中存取的最小信息單位為字節(jié)(Byte)。,,,,C++把每一個(gè)文件都看成一個(gè)有序的字節(jié)流,見圖9.2,每一個(gè)文件或者以文件結(jié)束符(endoffilemarker)結(jié)束,或者在特定的字節(jié)號(hào)處結(jié)束。,文件的基本概念:,9.2文件的輸入與輸出,當(dāng)打開一個(gè)文件時(shí),該文件就和某個(gè)流關(guān)聯(lián)起來了。對(duì)文件進(jìn)行讀寫實(shí)際上受到一個(gè)文件定位指針(filepositionpointer)的控制。輸入流的指針也稱為讀指針,每一次提取操作將從讀指針當(dāng)前所指位置開始,每次提取操作自動(dòng)將讀指針向文件尾移動(dòng)。輸出流指針也稱寫指針,每一次插入操作將從寫指針當(dāng)前位置開始,每次插入操作自動(dòng)將寫指針向文件尾移動(dòng)。,,,,9.2.1文件的打開與關(guān)閉,9.2.2文本文件的讀寫,9.2.3二進(jìn)制文件的讀寫,9.2.4文件的隨機(jī)訪問,9.2.1文件的打開與關(guān)閉,文件使用步驟:1.說明一個(gè)文件流對(duì)象,這又被稱為內(nèi)部文件:ifstreamifile;//只輸入用ofstreamofile;//只輸出用fstreamiofile;//既輸入又輸出用,,,,2.使用文件流對(duì)象的成員函數(shù)打開一個(gè)磁盤文件。這樣在文件流對(duì)象和磁盤文件名之間建立聯(lián)系。文件流中說明了三個(gè)打開文件的成員函數(shù)。voidifstream::open(constchar*,int=ios::in,int=filebuf::openprot);voidofstream::open(constchar*,int=ios::out,int=filebuf::opernprot);voidfstream::open(constchar*,int,int=filebuf::openprot);第一個(gè)參數(shù)為要打開的磁盤文件名。第二個(gè)參數(shù)為打開方式,有輸入(in),輸出(out)等,打開方式在ios基類中定義為枚舉類型。第三個(gè)參數(shù)為指定打開文件的保護(hù)方式,一般取默認(rèn)。所以第二步可如下進(jìn)行:iofile.open(“myfile.txt”,ios::in|ios::out);,,,文件打開方式:是由在ios類中定義的公有枚舉成員決定:enumopen_mode{in=0 x01,out=0 x02,ate=0 x04,app=0 x08,trunc=0 x10,binary=0 x80};,,,ios::in打開文件進(jìn)行讀操作ios::out打開文件進(jìn)行寫操作ios::ate打開時(shí)文件指針定位到文件尾ios::app添加模式,所有增加都在文件尾部進(jìn)行ios::trunc如果文件已經(jīng)存在則清空源文件ios::nocreate如果文件不存在則打開失敗ios::noreplace如果文件存在則打開失敗ios::binary二進(jìn)制文件(非文本文件)Mode的符號(hào)常量可以用位或運(yùn)算|組合在一起,如:ios::in|ios::binary只讀方式打開二進(jìn)制文件對(duì)于ifstream流,mode默認(rèn)方式是ios;;in;對(duì)于ofstream流,mode默認(rèn)方式是ios;;out;,,,打開方式解釋:,Port決定文件的訪問方式0普通文件2隱含文件1只讀文件4系統(tǒng)文件,三個(gè)文件流類都重載了一個(gè)帶默認(rèn)參數(shù)的構(gòu)造函數(shù),功能與open函數(shù)一樣:ifstream::ifstream(constchar*,int=ios::in,int=filebuf::openprot);ofstream::ofstream(constchar*,int=ios::out,int=filebuf::openprot);fstream::fstream(constchar*,int,int=filebuf::operprot);所以1,2兩步可合成:fstreamiofile(”myfile.txt”,ios::in|ios::out);,,,打開文件也應(yīng)該判斷是否成功,若成功,文件流對(duì)象值為非零值,不成功為0(NULL),文件流對(duì)象值物理上就是指它的地址。因此打開一個(gè)文件完整的程序?yàn)椋篺streamiofile(”myfile.txt”,ios::in|ios::out);if(!iofile){cout<<”不能打開文件:”<<”myfile.txt”- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 流類庫 輸入輸出 程序設(shè)計(jì) 吳乃陵
鏈接地址:http://www.820124.com/p-3409954.html