C程序設(shè)計語言揣錦華第9章流類庫與輸入輸出.ppt
《C程序設(shè)計語言揣錦華第9章流類庫與輸入輸出.ppt》由會員分享,可在線閱讀,更多相關(guān)《C程序設(shè)計語言揣錦華第9章流類庫與輸入輸出.ppt(62頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第9章流類庫與輸入/輸出,9.1輸入/輸出標準流類9.2文件流類9.3串流類9.4控制符,9.1輸入/輸出標準流類,9.1.1輸入/輸出流的概念就像C語言一樣,C++語言中也沒有輸入/輸出語句。C++的I/O是以字節(jié)流的形式實現(xiàn)的,每一個C++編譯系統(tǒng)都帶有一個面向?qū)ο蟮妮斎?輸出軟件包,這就是I/O流類庫。其中,流是I/O流類的中心概念。到目前為止,我們一直在使用它。,所謂流,是指數(shù)據(jù)從一個對象流向另一個對象。在C++程序中,數(shù)據(jù)可以從鍵盤流入到程序中,也可以從程序中流向屏幕或磁盤文件,把數(shù)據(jù)的流動抽象為“流”。流在使用前要被建立,使用后要被刪除,還要使用一些特定的操作從流中獲取數(shù)據(jù)或向流中添加數(shù)據(jù)。從流中獲取數(shù)據(jù)的操作稱為提取操作,向流中添加數(shù)據(jù)的操作稱為插入操作。,流實際上就是一個字節(jié)序列。在輸入操作中,字節(jié)從輸入設(shè)備(如鍵盤、磁盤、網(wǎng)絡(luò)連接等)流向內(nèi)存;在輸出操作中,字節(jié)從內(nèi)存流向輸出設(shè)備(如顯示器、打印機、磁盤、網(wǎng)絡(luò)連接等)。如圖9-1所示。在C++語言中,針對流的特點,提供了如圖9-2所示的層次結(jié)構(gòu)來描述流的行為,并給出了I/O流類庫的操作。,圖9-2輸入/輸出流類層次圖,表9-1I/O流類列表,9.1.2輸入/輸出標準流類1.標準流的設(shè)備名由表9-1可見,I/O流的標準頭文件是iostream.h。其中,ostream類通過其派生類ostream_withassign支持以下預(yù)先定義的流對象:cout:標準輸出。默認設(shè)備為屏幕。cerr:標準錯誤輸出。沒有緩沖,發(fā)送給它的內(nèi)容立即被輸出,默認設(shè)備為屏幕。,clog:標準錯誤輸出。有緩沖,當緩沖區(qū)滿時被輸出,默認設(shè)備為打印機。而istream類通過其派生類istream_withassign支持預(yù)先定義的對象。cin:標準輸入。默認設(shè)備為鍵盤。,2.原理cout是ostream類的全局對象,它在頭文件iostream.h中的定義如下:ostreamcout(stdout);//這里,stdout作為該對象構(gòu)造時的參數(shù)對應(yīng)每種基本數(shù)據(jù)類型,ostream類都存在友元,它們都在iostream.h中聲明。例如:ostream//...,如語句:cout>(int//...,9.2文件流類,fstream、ifstream和ofstream是文件流類,在頭文件fstream.h中定義。其中,fstream是ofstream和ifstream多重繼承的子類。文件流類不是標準設(shè)備,沒有cout那樣預(yù)先定義的全局對象。文件流類支持對磁盤文件的操作。要定義一個文件流類對象,須指定文件名和打開方式。,類ofstream用于執(zhí)行文件輸出,該類有以下幾個構(gòu)造函數(shù):ofstream::ofstream(filedescfd);ofstream::ofstream(filedescfd,char*pch,intnLength);ofstream::ofstream(constchar*szName,intnMode=ios::out,intnProt=filebuf::openprot);,類ifstream用于執(zhí)行文件輸入,該類有以下幾個構(gòu)造函數(shù):ifstream::ifstream(filedescfd);ifstream::ifstream(filedescfd,char*pch,intnLength);ifstream::ifstream(constchar*szName,intnMode=ios::in,intnProt=filebuf::openprot);,其中最常用的都是最后一個構(gòu)造函數(shù)。該函數(shù)有三個參數(shù),第一個參數(shù)是指向要打開的文件名的字符串,后兩個參數(shù)指定文件的打開模式。文件打開模式的具體標志見表9-2??梢杂冒次籓R(|)運算符組合這些標志,它們作為枚舉器定義在ios類中。,表9-2文件打開模式,打開一個輸出文件,用于在文件尾添加數(shù)據(jù)打開一個現(xiàn)存文件(用于輸入或輸出)并查找到結(jié)尾打開一個輸入文件。對于一個ofstream文件,使用ios::in作為一個openmode,可避免刪除一個現(xiàn)存文件中現(xiàn)有的內(nèi)容打開一個文件,用于輸出。對于所有ofstream對象,此模式是隱含指定的如果一個文件存在,則打開它;否則該操作失敗,如果一個文件不存在,則作為新文件打開它;如果文件已存在,則該操作失敗打開一個文件。如果它已經(jīng)存在,則刪除其中原有的內(nèi)容。如果指定了ios::out,但沒有指定ios::ate、ios::app和ios::in,則隱含為此模式以二進制模式打開一個文件(默認是文本模式)Nprot是文件保護方式,它的標志如表9-3。,表9-3文件保護方式,【例9-1】向文件myfile中寫入一些信息。#includevoidmain(){ofstreamfc("c:\\temp\\myfile");fc<<"Constructsanofstreamobject.\n"<<"Allofstreamconstructorsconstructafilebufobject.\n";},注意:①這里的文件名要說明其路徑,要使用雙斜杠,因為C++編譯器理解單斜杠為字符轉(zhuǎn)換符。②在文件打開時,匹配了構(gòu)造函數(shù)ofstream::ofstream(char*),只需要一個文件名,其它為默認。打開方式默認為ios::out|ios::trunc,即該文件用于接受程序的輸出。如果該文件已存在,則其內(nèi)容必須先清除,否則就新建。,如果要檢查文件是否打開,則須判斷成員函數(shù)fail():#includevoidfunc(){ofstreamfc("myfile");if(fc.fail())//fail()==1{cerr<<"erroropeningfile\n";return;}fc<>a;cout<iNumber>>fNumber;//從串流中讀入一個整數(shù)和浮點數(shù)char*Buf1=newchar[28];ostrstreamoutS(Buf1,28);outS<<"iNumber="<- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 程序設(shè)計語言 揣錦華第 章流類庫 輸入輸出
鏈接地址:http://m.appdesigncorp.com/p-11548942.html