




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第1111章章 C+輸入輸入/輸出流與文件系統(tǒng)輸出流與文件系統(tǒng) 制作人:沈顯君 楊進(jìn)才C+語語言言程程序序設(shè)設(shè)計計教教程程第第11章章C+輸輸入入輸輸出出流流 到目前為止,程序執(zhí)行所需的數(shù)據(jù)由鍵盤輸入,執(zhí)行的結(jié)果在顯示器上顯示或臨時存于內(nèi)存中,一旦程序執(zhí)行完畢,數(shù)據(jù)將從內(nèi)存中消失。下一次執(zhí)行數(shù)據(jù)必須重新輸入重新輸入。 將程序所需數(shù)據(jù)和產(chǎn)生的數(shù)據(jù)保存的方法是使用文件,文件是保存在輔存中,如磁盤、光盤、磁帶中的數(shù)據(jù)集合。 C+語言把每個文件看成是一個有序的字節(jié)流有序的字節(jié)流。文件打開時,就創(chuàng)建一個對象,并將這個對象和某個流關(guān)聯(lián)起來。包含時,會自動生成cin、cout、cerr和clog這4個對象
2、,與這些對象關(guān)聯(lián)的流提供與文件通信的方法(文件操作)。如cin對象使程序從鍵盤或文件中輸入數(shù)據(jù),cout對象使程序能向屏幕或文件輸出數(shù)據(jù),cerr和clog使程序能向屏幕或其他設(shè)備輸出錯誤信息。 C+語語言言程程序序設(shè)設(shè)計計教教程程第第11章章C+輸輸入入輸輸出出流流11.6 文件的輸出文件的輸出/輸入輸入 basic_ios basic_istream basic_ostream basic_ifstream basic_iostream basic_ofstream basic_fstream ios_base I/O流類庫中各個類模板之間的層次關(guān)系C+語語言言程程序序設(shè)設(shè)計計教教程程第第
3、11章章C+輸輸入入輸輸出出流流1. 文件的創(chuàng)建文件的創(chuàng)建 C+負(fù)責(zé)文件輸出/輸入的類有ifstream(文件輸入文件輸入),ofstream(文件輸出文件輸出)以及fstream(文件輸出文件輸出/輸入輸入),見圖11.1。 所謂的文件輸入輸出,是從程序或內(nèi)存的角度而言的,文件輸入文件輸入是指從文件向內(nèi)存讀入數(shù)據(jù);文件輸出文件輸出則指從內(nèi)存向文件輸出數(shù)據(jù)。類ifstream、ofstream、fstream分別在包含頭文件ifstream、ofstream、fstream中定義,要使用它們,必須包含相應(yīng)的頭文件。 可以使用這些類建立文件流對象文件流對象。 如下列語句: fstream myf
4、ile; 建立了一個文件流對象myfile。然后利用fstream提供的open()成員函數(shù)打開文件與流連接。open()函數(shù)的原型如下:void open( const charvoid open( const char* * szName, int, int nMode = ios:in= ios:in, int, int nProt =filebuf:openprot=filebuf:openprot ) )C+語語言言程程序序設(shè)設(shè)計計教教程程第第11章章C+輸輸入入輸輸出出流流表表11-9 文件打開文件打開(操作操作)模式表模式表 模式參數(shù)模式參數(shù)說明說明ios:in為輸入打開文件,是
5、fstream,istream的默認(rèn)模式。ios:out為輸出打開文件,是ostream的默認(rèn)模式。ios:ate打開文件輸出,文件指針處于文件尾。ate=at endios:app從文件尾添加數(shù)據(jù)。ios:trunc如文件存在,清除文件內(nèi)容(默認(rèn)模式)ios:nocreate要打開的文件不存在則產(chǎn)生錯誤。ios:noreplace如文件存在,且ate與app未被設(shè)定,則產(chǎn)生錯誤ios:binary以二進(jìn)制方式打開文件(默認(rèn)模式為文本模式)C+語語言言程程序序設(shè)設(shè)計計教教程程第第11章章C+輸輸入入輸輸出出流流1. 文件的創(chuàng)建文件的創(chuàng)建 例如: myfile.open(d:myprogp1_1
6、.cpp, ios:in|ios:out); 打開文本文件p1_1.cpp用于輸入輸出。 當(dāng)用fstream、ofstream、ifstream建立文件流對象時可直接給出文件名、操作模式等參數(shù),這樣可以省略open()函數(shù)的使用。 輸出文件流的建立可以使用如下方法: fstream ofile(c:myprogf1.cpp, ios:out); ofstream ofile(c:myprogf1.cpp) 輸入文件流的建立方法: fstream ifile(c:myprogf1.dat, ios:in) ifstream ifile(c:myprogdat.cpp) 從圖11-1 I/O流類層
7、次結(jié)構(gòu)中可以看出, fstream類繼承于iostream, 而iostream又繼承于istream和ostream,因此,定義于istream與ostream處理數(shù)據(jù)流輸出與輸入的成員函數(shù)都可以用在文件的輸出與輸入上。C+語語言言程程序序設(shè)設(shè)計計教教程程第第11章章C+輸輸入入輸輸出出流流2. 文本文件的輸出文本文件的輸出 C+的文件I/O模式分為兩種:文本模式與二進(jìn)制模式文本模式與二進(jìn)制模式,默認(rèn)的文件模式為文本模式。當(dāng)使用文本模式時,輸出到文件的內(nèi)容為ASCII碼字符(包括回車、換行) 。也就是說,文本文件文本文件中只能存儲ASCII碼字符。如整數(shù)123與浮點數(shù)234.5在文本文件中分
8、別存儲為: ”123”與”234.5”。 文本文件通常以.txt為后綴,C+的源程序文件也屬于文本文件。文本文件在windows的記事本與書寫器中都能打開,在linux系統(tǒng)下可以用vi, emacs等文本編輯軟件來編輯。 文本文件文本文件輸出可用插入操作符與成員函數(shù)write()。 文件輸出的步驟一般為: (1) 建立輸出文件流(對象),將建立的文件連接到文件流上。此步需要對文件是否建立成功進(jìn)行判斷,如果文件建立錯誤,則退出。 (2) 向輸出文件流輸出內(nèi)容。 (3) 關(guān)閉文件(文件流對象消失時也會自動關(guān)閉文件) 2.鏈表類模板鏈表類模板C+語語言言程程序序設(shè)設(shè)計計教教程程第第11章章C+輸輸入
9、入輸輸出出流流12345678910111213141516171819202122/* 程序名:p11_10.cpp * 功能: 文本文件輸出舉例 */# include # include using namespace std;int main() char line180;fstream myfile; /建立文件流myfile.open(d:record.txt, ios:out|ios:trunc);if(!myfile) cerrFile open or create error!line) myfileline;myfile.close(); return 0; 運行結(jié)果運行結(jié)
10、果: :輸入:Antony80.5 John 90 Tom 60 Z 文件record.txt中的內(nèi)容為:Antony80.5John90Tom60 C+語語言言程程序序設(shè)設(shè)計計教教程程第第11章章C+輸輸入入輸輸出出流流3. 二進(jìn)制文件輸出二進(jìn)制文件輸出 文本文件中存儲的是字符串字符串,當(dāng)我們要使用其中的數(shù)據(jù)就不方便了,如求學(xué)生成績文件中的學(xué)生成績的平均分。 二進(jìn)制文件二進(jìn)制文件是指含含ASCII碼字符外的數(shù)據(jù)的文件碼字符外的數(shù)據(jù)的文件,它不能由文本編輯軟件打開。在實際應(yīng)用中,大多數(shù)文件都是二進(jìn)制文件,如圖象文件(后綴包括.bmp, .jpg, .tif, .gif等),影像文件,聲音文件,
11、數(shù)據(jù)庫文件。 Microsoft Word 的.doc文件也是二進(jìn)制文件,因為除了字符外,它還含有字體、字號、顏色等數(shù)據(jù)。輸出二進(jìn)制文件的方法是使用write()成員函數(shù)。 2.鏈表類模板鏈表類模板C+語語言言程程序序設(shè)設(shè)計計教教程程第第11章章C+輸輸入入輸輸出出流流1234567891011121314151617/* 程序名:p11_11.cpp * 功能: 二進(jìn)制文件與文本文件比較 */# include # include using namespace std;int main() char *name3=Antony,John,Tom;float score3=85.5, 90,
12、 60;fstream txtfile,binfile; /建立文件流對象txtfile.open(d:c+bookrecord.txt,ios:out|ios:trunc); binfile.open(d:c+bookrecord.dat,ios:binary|ios:out|ios:trunc);if(!txtfile) cerr record.txt open or create error!endl;exit(1); 2.鏈表類模板鏈表類模板1819202122232425262728293031 if(!binfile) cerr record.dat open or create
13、error!endl;exit(1);for(int i=0;i3;i+) txtfilenameitscorei, 在文件輸入中要經(jīng)常檢查文件是否到達(dá)尾部,輸入流的成員函數(shù)eof()用來偵測是否到達(dá)文件結(jié)尾。若讀取到文件結(jié)尾時,返回true 。 文件輸出一般要經(jīng)過下列三個步驟: (1) 建立輸入文件流(對象),將以輸入方式打開的文件連接到文件流上。此步需要對文件是否打開成功進(jìn)行判斷,如果文件打開錯誤,則退出。 (2) 從輸入文件流中讀內(nèi)容。此步需要對讀文件是否成功進(jìn)行判斷,如果讀入不成功或到文件尾,則讀入結(jié)束。 (3) 關(guān)閉文件(文件流對象消失時也會自動關(guān)閉文件)。 2.鏈表類模板鏈表類模板
14、C+語語言言程程序序設(shè)設(shè)計計教教程程第第11章章C+輸輸入入輸輸出出流流12345678910111213141516171819202122/* 程序名:p11_12.cpp * 功能: 文本文件的輸入 */# include # include using namespace std;int main() char name8,score6;ifstream txtfile; /建立輸入文件流對象txtfile.open(d:c+bookrecord.txt); if(!txtfile) cerr record.txt open error!namescore; coutnametscor
15、eendl;txtfile.close(); return 0; C+語語言言程程序序設(shè)設(shè)計計教教程程第第11章章C+輸輸入入輸輸出出流流6. 二進(jìn)制文件輸入二進(jìn)制文件輸入 輸入二進(jìn)制文件使用成員函數(shù)read()每次讀取固定長度的數(shù)據(jù),同樣用eof()判斷是否到達(dá)文件尾。 1234567891011121314/* 程序名:p11_13.cpp * 功能: 二進(jìn)制文件的輸入 */# include # include using namespace std;int main() char name8;float score;ifstream binfile; /建立輸入文件流對象binfile.open(d:c+bookrecord.dat,ios:binary); if(!binfile) cerr record.dat open error!endl; 2.鏈表類模板鏈表類模板C+語語言言程程序序設(shè)設(shè)計計教教程程第第11章章C+輸輸入入輸輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校空教室管理制度
- 學(xué)校采購組管理制度
- 學(xué)生宿消防管理制度
- 安全檢維修管理制度
- 宗教局資產(chǎn)管理制度
- 實體店市場管理制度
- 實驗室標(biāo)識管理制度
- 客房遺留物管理制度
- 宣城市交通管理制度
- 家居安裝員管理制度
- 學(xué)校信息化建設(shè)十五五規(guī)劃方案
- 小學(xué)民法典主題班會教案
- 2025年江西報業(yè)傳媒集團(tuán)招聘題庫帶答案分析
- 公司退貨流程管理制度
- (新版)供電可靠性理論考試題庫大全-上(單選、多選題)
- 黃金的冶煉工藝流程
- 美術(shù)學(xué)院 本科培養(yǎng)方案 - 清華大學(xué) - Tsinghua University
- AS9100D體系標(biāo)準(zhǔn)中文版
- 《中國腦卒中護(hù)理指導(dǎo)規(guī)范(2021年版)》課件
- 學(xué)前教育學(xué)備課課件(共54張PPT)
- 空調(diào)安裝安全協(xié)議書1
評論
0/150
提交評論