C++面向?qū)ο蟪绦蛟O(shè)計(jì)講稿課件_第1頁
C++面向?qū)ο蟪绦蛟O(shè)計(jì)講稿課件_第2頁
C++面向?qū)ο蟪绦蛟O(shè)計(jì)講稿課件_第3頁
C++面向?qū)ο蟪绦蛟O(shè)計(jì)講稿課件_第4頁
C++面向?qū)ο蟪绦蛟O(shè)計(jì)講稿課件_第5頁
已閱讀5頁,還剩99頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》輸入輸出流第7章2輸入輸出流第7章2本章內(nèi)容7.1C++的輸入和輸出7.2標(biāo)準(zhǔn)輸出流7.3標(biāo)準(zhǔn)輸入流7.4文件操作與文件流7.5字符串流3本章內(nèi)容7.1C++的輸入和輸出3目標(biāo)理解C++輸入輸出流及相關(guān)概念(★)理解標(biāo)準(zhǔn)輸出流對(duì)象的使用及輸出格式控制(★★)理解標(biāo)準(zhǔn)輸入流對(duì)象及輸入流的成員函數(shù)的使用(★★)理解文件概念、文件流與文件流對(duì)象的相關(guān)知識(shí)(★)理解二進(jìn)制和文本文件的操作(★★)4目標(biāo)理解C++輸入輸出流及相關(guān)概念(★)4第7章輸入輸出流7.1C++的輸入和輸出7.2標(biāo)準(zhǔn)輸出流7.3標(biāo)準(zhǔn)輸入流7.4文件操作與文件流7.5字符串流5第7章輸入輸出流7.1C++的輸入和輸出57.1C++的輸入和輸出

(一)輸入輸出的含義(二)C++的I/0對(duì)C的發(fā)展(三)C++的輸入輸出流67.1C++的輸入和輸出67.1C++的輸入和輸出

(一)輸入輸出的含義程序的輸入是指從輸入文件將數(shù)據(jù)傳送給程序,輸出是指將數(shù)據(jù)傳送給輸出文件。

如:從鍵盤輸入數(shù)據(jù)給程序、將程序運(yùn)行結(jié)果顯示在顯示器上等。從操作系統(tǒng)的角度來看,每一個(gè)與主機(jī)相連的輸入輸出設(shè)備都被看作文件。文件是輸入輸出操作的對(duì)象。C++系統(tǒng)提供龐大的I/O類庫,調(diào)用不同的類去實(shí)現(xiàn)不同的功能.77.1C++的輸入和輸出(一)輸入輸出的含義77.1C++的輸入和輸出

(一)輸入輸出的含義C++的輸入與輸出包括以下3方面的內(nèi)容:(1)對(duì)系統(tǒng)指定的標(biāo)準(zhǔn)設(shè)備的輸入和輸出,稱為標(biāo)準(zhǔn)的輸入輸出,簡(jiǎn)稱標(biāo)準(zhǔn)I/0。(2)以外存磁盤文件為對(duì)象進(jìn)行輸入和輸出,稱為文件的輸入輸出,簡(jiǎn)稱文件I/O。(3)對(duì)內(nèi)存中指定的空間進(jìn)行輸入和輸出,稱為字符串輸出輸出,簡(jiǎn)稱串I/O。87.1C++的輸入和輸出(一)輸入輸出的含義87.1C++的輸入和輸出

(二)C++的I/O對(duì)C的發(fā)展類型安全C++為了兼容C,保留了用printf和scanf進(jìn)行輸出輸入的方法。C++在輸入輸出中添加了,編譯系統(tǒng)對(duì)數(shù)據(jù)類型的嚴(yán)格檢查。類型不正確的數(shù)據(jù)不能通過編譯??蓴U(kuò)展性C++的I/O除了可以輸入輸出標(biāo)準(zhǔn)類型的數(shù)據(jù)以外,還可以輸入輸出用戶自定義數(shù)據(jù)類型。97.1C++的輸入和輸出(二)C++的I/O對(duì)C的7.1C++的輸入和輸出

(三)C++的輸入輸出流C++的輸入輸出流簡(jiǎn)介

“流”就是數(shù)據(jù)流,是字符序列在主機(jī)與外部介質(zhì)之間的流動(dòng),它負(fù)責(zé)在數(shù)據(jù)的產(chǎn)生者和使用者之間建立聯(lián)系,并管理數(shù)據(jù)的流動(dòng)。具有方向性。內(nèi)存輸出緩沖區(qū)輸入緩沖區(qū)輸出設(shè)備輸入設(shè)備數(shù)據(jù)形成cin流>><<數(shù)據(jù)形成cout流107.1C++的輸入和輸出(三)C++的輸入輸出流內(nèi)7.1C++的輸入和輸出

(三)C++的輸入輸出流C++中,輸入輸出流被定義為類,稱為流類,用流類定義的對(duì)象稱為流對(duì)象(cin,cout)。C++提供的用于輸入輸出的iostream類庫存。

(查看P222表7.1)C++的流庫(streamlibrary)是用繼承方法建立起來的一個(gè)輸入輸出類庫。(查看P223圖7.3)117.1C++的輸入和輸出(三)C++的輸入輸出流17.1C++的輸入和輸出

(三)C++的輸入輸出流與iostream類庫有關(guān)的頭文件iostream:包含使用標(biāo)準(zhǔn)輸入輸出流所需的所有聲明和定義。它包含四個(gè)標(biāo)準(zhǔn)流對(duì)象:cin、cout、cerr、clog,提供了無格式和格式化的I/O功能。fstream:包含有關(guān)文件處理的信息,提供建立文件和讀寫文件等各種操作的接口。

strstream:用于字符串流的i/o。stdiostream:用于混合使用C和C++的I/O機(jī)制。iomanip:在使用格式化I/O時(shí)包含此頭文件。127.1C++的輸入和輸出(三)C++的輸入輸出流17.1C++的輸入和輸出

(三)C++的輸入輸出流在iostream頭文件中定義的流對(duì)象C++中標(biāo)準(zhǔn)流設(shè)備名稱默認(rèn)設(shè)備默認(rèn)含義cin鍵盤標(biāo)準(zhǔn)輸入cout屏幕標(biāo)準(zhǔn)輸出cerr屏幕標(biāo)準(zhǔn)錯(cuò)誤輸出clog打印機(jī)標(biāo)準(zhǔn)錯(cuò)誤輸出137.1C++的輸入和輸出(三)C++的輸入輸出流C第7章輸入輸出流7.1C++的輸入和輸出7.2標(biāo)準(zhǔn)輸出流7.3標(biāo)準(zhǔn)輸入流7.4文件操作與文件流7.5字符串流14第7章輸入輸出流7.1C++的輸入和輸出147.4文件操作與文件流

(一)文件的概念(二)文件流類和文件流對(duì)象(三)文件的打開與關(guān)閉(四)對(duì)ASCII文件的操作(五)對(duì)二進(jìn)制文件的操作157.4文件操作與文件流(一)文件的概念157.4文件操作與文件流

(一)文件的概念文件:指存儲(chǔ)在外部介質(zhì)上的數(shù)據(jù)集合,操作系統(tǒng)以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理。根據(jù)存儲(chǔ)格式可以把文件分為兩種類型:ASCII碼文件(文本文件)內(nèi)部格式文件(二進(jìn)制文件)。如:100文本:001100010011000000110000---3B二進(jìn)制:01100100-------------------1B167.4文件操作與文件流(一)文件的概念167.4文件操作與文件流

(一)文件的概念(二)文件流類和文件流對(duì)象(三)文件的打開與關(guān)閉(四)對(duì)ASCII文件的操作(五)對(duì)二進(jìn)制文件的操作177.4文件操作與文件流(一)文件的概念177.4文件操作與文件流

(二)文件流類和文件流對(duì)象文件流:以外存文件為輸入輸出對(duì)象的數(shù)據(jù)流。文件流與文件是有區(qū)別的。文件流本身不是文件,只是以文件為輸入輸出對(duì)象的流。

文件流不是若干個(gè)文件組成的流。

C++對(duì)文件的讀寫操作包含3個(gè)基本步驟:建立一個(gè)文件流對(duì)象把文件流對(duì)象與實(shí)際文件相關(guān)聯(lián),稱為打開文件;對(duì)文件流進(jìn)行讀/寫操作;關(guān)閉文件。187.4文件操作與文件流(二)文件流類和文件流對(duì)象17.4文件操作與文件流

(二)文件流類和文件流對(duì)象C++的I/O類庫中定義了三種文件類,專門用于文件操作。ifstream類:從istream類派生,用來支持磁盤文件的輸入。ofstream類:從ostream類派生,用來支持磁盤文件的輸出。fstream類:從iostream類派生,用來支持磁盤文件的輸入和輸出。197.4文件操作與文件流(二)文件流類和文件流對(duì)象17.4文件操作與文件流

(一)文件的概念(二)文件流類和文件流對(duì)象(三)文件的打開與關(guān)閉(四)對(duì)ASCII文件的操作(五)對(duì)二進(jìn)制文件的操作207.4文件操作與文件流(一)文件的概念207.4文件操作與文件流

(三)文件的打開與關(guān)閉打開文件打開文件操作包括建立文件流對(duì)象,與外部文件關(guān)聯(lián),指定文件的打開方式。

打開文件有兩種方式:方式一:先建立流對(duì)象,后調(diào)用open連接外部文件。流類對(duì)象名;對(duì)象名.open(文件名,打開方式);方式二:調(diào)用流類帶參數(shù)的構(gòu)造函數(shù),建立對(duì)象的同時(shí)連接外部文件。流類對(duì)象名(文件名,打開方式);217.4文件操作與文件流(三)文件的打開與關(guān)閉217.4文件操作與文件流

(三)文件的打開與關(guān)閉打開文件方式一:流類對(duì)象名;對(duì)象名.open(文件名,打開方式);方式二:流類對(duì)象名(文件名,打開方式);“流類”是流類庫中定義的文件流類,ifstream用于讀方式打開文件,ofstream用于寫方式打開文件,而fstream用于讀/寫方式打開文件。

“打開方式”是ios定義的標(biāo)識(shí)常量,表示文件的訪問方式(查看表7-7)。

用戶定義標(biāo)識(shí)符外部文件名227.4文件操作與文件流(三)文件的打開與關(guān)閉用戶定7.4文件操作與文件流

(三)文件的打開與關(guān)閉打開文件方式一:流類對(duì)象名;對(duì)象名.open(文件名,打開方式);方式二:流類對(duì)象名(文件名,打開方式);ifstreaminfile;infile.open(“d:\\file1.txt”,ios::in);fstreamrwfile(“d:\\file3.txt”,ios::in|ios::out);237.4文件操作與文件流(三)文件的打開與關(guān)閉237.4文件操作與文件流

(三)文件的打開與關(guān)閉打開文件說明事項(xiàng):新版本C++的I/O類庫中不提供ios::nocreate和ios::noreplace。每個(gè)打開的文件都有一個(gè)文件指針,它的初始位置由I/O方式?jīng)Q定。可以用“|”位或運(yùn)算符對(duì)輸入輸出方式進(jìn)行組合。如果打開失敗,open函數(shù)返回0值。可據(jù)此測(cè)試打開是否成功。247.4文件操作與文件流(三)文件的打開與關(guān)閉247.4文件操作與文件流

(三)文件的打開與關(guān)閉關(guān)閉文件當(dāng)一個(gè)文件讀寫操作完畢后,應(yīng)及時(shí)關(guān)閉文件。關(guān)閉文件操作主要完成將緩沖區(qū)數(shù)據(jù)完整地寫入文件,添加文件結(jié)束標(biāo)志,切斷流對(duì)象和外部文件的連接等任務(wù)。

關(guān)閉文件方式:對(duì)象名.close();例:257.4文件操作與文件流(三)文件的打開與關(guān)閉257.4文件操作與文件流

#include<iostream>#include<fstream>usingnamespacestd;intmain(){ofstreamoutfile("d:\\f1.txt",ios::out);if(!outfile)cout<<"打開文件錯(cuò)誤!"<<endl;outfile.close();return0;}267.4文件操作與文件流#include<iost7.4文件操作與文件流

(一)文件的概念(二)文件流類和文件流對(duì)象(三)文件的打開與關(guān)閉(四)對(duì)ASCII文件的操作(五)對(duì)二進(jìn)制文件的操作277.4文件操作與文件流(一)文件的概念277.4文件操作與文件流

(四)對(duì)ASCII文件的操作ASCII文件:文件的每一個(gè)字節(jié)中均以ASCII碼形式存放數(shù)據(jù),即一個(gè)字節(jié)存放一個(gè)字符。ASCII文件的讀寫操作有兩種形式:用“<<”和“>>”輸入輸出標(biāo)準(zhǔn)類型的數(shù)據(jù)。用文件流中的put,get,getline等成員函數(shù)進(jìn)行字符的輸入輸出。

例:整形數(shù)組含3個(gè)元素,將他們存到文件中,并取出來,在屏幕上顯示。287.4文件操作與文件流(四)對(duì)ASCII文件的操作7.4文件操作與文件流

(一)文件的概念(二)文件流類和文件流對(duì)象(三)文件的打開與關(guān)閉(四)對(duì)ASCII文件的操作(五)對(duì)二進(jìn)制文件的操作297.4文件操作與文件流(一)文件的概念297.4文件操作與文件流

(五)對(duì)二進(jìn)制文件的操作二進(jìn)制文件:將內(nèi)存中數(shù)據(jù)存儲(chǔ)形式不加轉(zhuǎn)換地傳送到磁盤文件中,即以二進(jìn)制形式存儲(chǔ)信息。打開二進(jìn)制文件時(shí),必須要指定ios::binary。用成員函數(shù)read和write讀寫二進(jìn)制文件istream&read(char*buffer,intlen);ostream&write(constchar*buffer,intlen);

指向內(nèi)存中一段存儲(chǔ)空間讀寫的字節(jié)數(shù)307.4文件操作與文件流(五)對(duì)二進(jìn)制文件的操作指向7.4文件操作與文件流(五)對(duì)二進(jìn)制文件的操作例:將三個(gè)學(xué)生的信息存到二進(jìn)制文件中,學(xué)生定義如下:structstudent{charname[20];intnum;intage;charsex;};317.4文件操作與文件流(五)對(duì)二進(jìn)制文件的操作317.4文件操作與文件流

(五)對(duì)二進(jìn)制文件的操作與文件指針相關(guān)的流成員函數(shù)(P254表7.7)文件指針相對(duì)移動(dòng)函數(shù)

移動(dòng)讀指針:seekg();

移動(dòng)寫指針:seekp();327.4文件操作與文件流(五)對(duì)二進(jìn)制文件的操作32練習(xí)例7.13從鍵盤中讀入一行字符,將其中的字母字符依次存入f2.dat中,再將文件中的內(nèi)容讀入程序,將小寫字母改成大寫字母,存入f3.dat中。思考:何種文件形式?閱讀分析例7.1633練習(xí)例7.13從鍵盤中讀入一行字符,將其中實(shí)驗(yàn)十一文件操作實(shí)驗(yàn)內(nèi)容:課后第5題實(shí)驗(yàn)時(shí)間:周五三單元實(shí)驗(yàn)報(bào)告:十六周周二一單元上交34實(shí)驗(yàn)十一文件操作實(shí)驗(yàn)內(nèi)容:課后第5題34小結(jié)(一)文件的概念(二)文件流類和文件流對(duì)象(三)文件的打開與關(guān)閉(四)對(duì)ASCII文件的操作(五)對(duì)二進(jìn)制文件的操作35小結(jié)(一)文件的概念357.4文件操作與文件流

(五)對(duì)二進(jìn)制文件的操作與文件指針相關(guān)的流成員函數(shù)參照位置:ios::cur當(dāng)前位置ios::end結(jié)尾ios:beg開頭例:infile.seekg(100)infile.seekg(-50,ios::cur)Outfile.seekg(10,ios::beg)367.4文件操作與文件流(五)對(duì)二進(jìn)制文件的操作36第7章輸入輸出流7.1C++的輸入和輸出7.2標(biāo)準(zhǔn)輸出流7.3標(biāo)準(zhǔn)輸入流7.4文件操作與文件流7.5字符串流37第7章輸入輸出流7.1C++的輸入和輸出377.2標(biāo)準(zhǔn)輸出流

(一)cout、cerr、clog流對(duì)象cout它是ostream流類的對(duì)象,表示流向顯示器的數(shù)據(jù),用流插入運(yùn)算符“<<”順序加入。用“cout<<”可以直接輸出基本類型數(shù)據(jù)。

例:inta,b;cout<<a<<b;如果想輸出用戶定義數(shù)據(jù)類型,必須先進(jìn)行運(yùn)算符的重載。

例:定義complex類,實(shí)現(xiàn)該對(duì)象的輸出。

complexc1;cout<<c1;

ostream&opeator<<(ostream&,complex&);

387.2標(biāo)準(zhǔn)輸出流(一)cout、cerr、clog7.2標(biāo)準(zhǔn)輸出流

(一)cout、cerr、clog流對(duì)象cerr:是標(biāo)準(zhǔn)出錯(cuò)流,被指定為與顯示器關(guān)聯(lián),它的作用是向標(biāo)準(zhǔn)出錯(cuò)設(shè)備輸出有關(guān)出錯(cuò)信息。例:(查看P227例7.1)clog:是標(biāo)準(zhǔn)出錯(cuò)流,作用也是在終端顯示器上顯示出錯(cuò)信息。cerr與clog的區(qū)別:cerr不經(jīng)過緩沖區(qū),直接向顯示器輸出有關(guān)信息。clog中的信息存放在緩沖區(qū)中,緩沖區(qū)滿或遇到endl時(shí)才向顯示器輸出。

397.2標(biāo)準(zhǔn)輸出流(一)cout、cerr、clog7.2標(biāo)準(zhǔn)輸出流

(二)格式輸出使用控制符控制輸出格式(查看P228表7.3)cout<<dec<<a<<endl;例:(查看P228例7.2)用流對(duì)象的成員函數(shù)控制輸出格式(查看P229表7.4)cout.width(10);例:(查看P230例7.3)407.2標(biāo)準(zhǔn)輸出流(二)格式輸出407.2標(biāo)準(zhǔn)輸出流

(三)用流成員函數(shù)put輸出字符put:專門用于輸出單個(gè)字符的成員函數(shù)。例如:cout.put(a);可以在一個(gè)語句中連續(xù)調(diào)用put函數(shù)。例:(查看P232例7.4)putchar函數(shù),C語言中使用的,也能輸出一個(gè)字符。在stdio.h頭文件中定義。417.2標(biāo)準(zhǔn)輸出流(三)用流成員函數(shù)put輸出字符4第7章輸入輸出流7.1C++的輸入和輸出7.2標(biāo)準(zhǔn)輸出流7.3標(biāo)準(zhǔn)輸入流7.4文件操作與文件流7.5字符串流42第7章輸入輸出流7.1C++的輸入和輸出427.3標(biāo)準(zhǔn)輸入流

(一)cin流cin是istream類的對(duì)象,它從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)獲取數(shù)據(jù),程序中的變量通過流提取符“>>”從流中提取數(shù)據(jù)。流提取符“>>”從流中提取數(shù)據(jù)時(shí)通常跳過輸入流中的空格、Tab鍵、換行符等空白字符。只有輸入完數(shù)據(jù)再按回車健后,該行數(shù)據(jù)才被送入鍵盤緩沖區(qū),形成輸入流,流提取符“>>”才能從中提取數(shù)據(jù)。437.3標(biāo)準(zhǔn)輸入流(一)cin流43(一)cin流(補(bǔ)充)Cin有自己狀態(tài)值,錯(cuò)誤時(shí)為0例Inta;cin>>a;//a=ssdlk處理:cin.clear();//清除錯(cuò)誤標(biāo)志 cin.sync();//清空緩存44(一)cin流(補(bǔ)充)Cin有自己狀態(tài)值,錯(cuò)誤時(shí)為0447.3標(biāo)準(zhǔn)輸入流

(二)用于字符輸入的流成員函數(shù)用get函數(shù)讀入一個(gè)字符。get函數(shù)有三種形式:cin.get()cin.get(字符變量)

作用:將讀入字符賦值給指定的字符變量。cin.get(字符數(shù)組,字符個(gè)數(shù)n,終止字符)

作用:從輸入流中讀取n-1個(gè)字符,賦給指定的字符數(shù)組。如果在讀取n-1個(gè)字符前遇到終止字符,則提前結(jié)束讀取。457.3標(biāo)準(zhǔn)輸入流(二)用于字符輸入的流成員函數(shù)457.3標(biāo)準(zhǔn)輸入流

(二)用于字符輸入的流成員函數(shù)用get函數(shù)的例題://第一種形式:#include<iostream>usingnamespacestd;intmain(){charc;cout<<"enterasentence:"<<endl;while((c=cin.get())!=EOF)//輸入ctrl+z結(jié)束cout.put(c);return0;}467.3標(biāo)準(zhǔn)輸入流(二)用于字符輸入的流成員函數(shù)//7.3標(biāo)準(zhǔn)輸入流

(二)用于字符輸入的流成員函數(shù)用get函數(shù)的例題://第二種形式:#include<iostream>usingnamespacestd;intmain(){charc;cout<<"enterasentence:"<<endl;while(cin.get(c))//輸入ctrl+z結(jié)束cout.put(c);return0;}477.3標(biāo)準(zhǔn)輸入流(二)用于字符輸入的流成員函數(shù)//7.3標(biāo)準(zhǔn)輸入流

(二)用于字符輸入的流成員函數(shù)用get函數(shù)的例題://第三種形式:#include<iostream>usingnamespacestd;intmain(){charc[20];cout<<"enterasentence:"<<endl;cin.get(c,10,’\n’);//輸入回車鍵提前結(jié)束讀取cout<<c<<endl;return0;}487.3標(biāo)準(zhǔn)輸入流(二)用于字符輸入的流成員函數(shù)//7.3標(biāo)準(zhǔn)輸入流

(二)用于字符輸入的流成員函數(shù)用getline函數(shù)讀入一行字符。getline函數(shù)形式:cin.getline(字符數(shù)組,字符個(gè)數(shù)n,終止字符)

作用:從輸入流中讀取n-1個(gè)字符,賦給指定的字符數(shù)組。如果在讀取n-1個(gè)字符前遇到終止字符,則提前結(jié)束讀取。例:(查看P237例7.7)497.3標(biāo)準(zhǔn)輸入流(二)用于字符輸入的流成員函數(shù)497.3標(biāo)準(zhǔn)輸入流

(三)istream類的其他成員函數(shù)1.eof函數(shù)(是endoffile的縮寫)

作用:表示“文件結(jié)束”。從輸入流讀取數(shù)據(jù),如果到達(dá)文件末尾,該函數(shù)值為非零值,否則為0。2.peek函數(shù)作用:觀測(cè)下一個(gè)字符。函數(shù)的返回值是指針指向的當(dāng)前字符,但它只是觀測(cè),指針仍停留在當(dāng)前位置,并不后移。

調(diào)用形式:while(f.peek()!=EOF)//判斷文件結(jié)束507.3標(biāo)準(zhǔn)輸入流(三)istream類的其他成員函總結(jié)本章主要講授內(nèi)容了解C++輸入輸出流及相關(guān)概念理解標(biāo)準(zhǔn)輸出流對(duì)象的使用及輸出格式控制理解標(biāo)準(zhǔn)輸入流對(duì)象及輸入流的成員函數(shù)的使用理解文件概念、文件流與文件流對(duì)象的相關(guān)知識(shí)掌握二進(jìn)制和文本文件的操作51總結(jié)本章主要講授內(nèi)容51演講完畢,謝謝觀看!演講完畢,謝謝觀看!《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》輸入輸出流第7章54輸入輸出流第7章2本章內(nèi)容7.1C++的輸入和輸出7.2標(biāo)準(zhǔn)輸出流7.3標(biāo)準(zhǔn)輸入流7.4文件操作與文件流7.5字符串流55本章內(nèi)容7.1C++的輸入和輸出3目標(biāo)理解C++輸入輸出流及相關(guān)概念(★)理解標(biāo)準(zhǔn)輸出流對(duì)象的使用及輸出格式控制(★★)理解標(biāo)準(zhǔn)輸入流對(duì)象及輸入流的成員函數(shù)的使用(★★)理解文件概念、文件流與文件流對(duì)象的相關(guān)知識(shí)(★)理解二進(jìn)制和文本文件的操作(★★)56目標(biāo)理解C++輸入輸出流及相關(guān)概念(★)4第7章輸入輸出流7.1C++的輸入和輸出7.2標(biāo)準(zhǔn)輸出流7.3標(biāo)準(zhǔn)輸入流7.4文件操作與文件流7.5字符串流57第7章輸入輸出流7.1C++的輸入和輸出57.1C++的輸入和輸出

(一)輸入輸出的含義(二)C++的I/0對(duì)C的發(fā)展(三)C++的輸入輸出流587.1C++的輸入和輸出67.1C++的輸入和輸出

(一)輸入輸出的含義程序的輸入是指從輸入文件將數(shù)據(jù)傳送給程序,輸出是指將數(shù)據(jù)傳送給輸出文件。

如:從鍵盤輸入數(shù)據(jù)給程序、將程序運(yùn)行結(jié)果顯示在顯示器上等。從操作系統(tǒng)的角度來看,每一個(gè)與主機(jī)相連的輸入輸出設(shè)備都被看作文件。文件是輸入輸出操作的對(duì)象。C++系統(tǒng)提供龐大的I/O類庫,調(diào)用不同的類去實(shí)現(xiàn)不同的功能.597.1C++的輸入和輸出(一)輸入輸出的含義77.1C++的輸入和輸出

(一)輸入輸出的含義C++的輸入與輸出包括以下3方面的內(nèi)容:(1)對(duì)系統(tǒng)指定的標(biāo)準(zhǔn)設(shè)備的輸入和輸出,稱為標(biāo)準(zhǔn)的輸入輸出,簡(jiǎn)稱標(biāo)準(zhǔn)I/0。(2)以外存磁盤文件為對(duì)象進(jìn)行輸入和輸出,稱為文件的輸入輸出,簡(jiǎn)稱文件I/O。(3)對(duì)內(nèi)存中指定的空間進(jìn)行輸入和輸出,稱為字符串輸出輸出,簡(jiǎn)稱串I/O。607.1C++的輸入和輸出(一)輸入輸出的含義87.1C++的輸入和輸出

(二)C++的I/O對(duì)C的發(fā)展類型安全C++為了兼容C,保留了用printf和scanf進(jìn)行輸出輸入的方法。C++在輸入輸出中添加了,編譯系統(tǒng)對(duì)數(shù)據(jù)類型的嚴(yán)格檢查。類型不正確的數(shù)據(jù)不能通過編譯??蓴U(kuò)展性C++的I/O除了可以輸入輸出標(biāo)準(zhǔn)類型的數(shù)據(jù)以外,還可以輸入輸出用戶自定義數(shù)據(jù)類型。617.1C++的輸入和輸出(二)C++的I/O對(duì)C的7.1C++的輸入和輸出

(三)C++的輸入輸出流C++的輸入輸出流簡(jiǎn)介

“流”就是數(shù)據(jù)流,是字符序列在主機(jī)與外部介質(zhì)之間的流動(dòng),它負(fù)責(zé)在數(shù)據(jù)的產(chǎn)生者和使用者之間建立聯(lián)系,并管理數(shù)據(jù)的流動(dòng)。具有方向性。內(nèi)存輸出緩沖區(qū)輸入緩沖區(qū)輸出設(shè)備輸入設(shè)備數(shù)據(jù)形成cin流>><<數(shù)據(jù)形成cout流627.1C++的輸入和輸出(三)C++的輸入輸出流內(nèi)7.1C++的輸入和輸出

(三)C++的輸入輸出流C++中,輸入輸出流被定義為類,稱為流類,用流類定義的對(duì)象稱為流對(duì)象(cin,cout)。C++提供的用于輸入輸出的iostream類庫存。

(查看P222表7.1)C++的流庫(streamlibrary)是用繼承方法建立起來的一個(gè)輸入輸出類庫。(查看P223圖7.3)637.1C++的輸入和輸出(三)C++的輸入輸出流17.1C++的輸入和輸出

(三)C++的輸入輸出流與iostream類庫有關(guān)的頭文件iostream:包含使用標(biāo)準(zhǔn)輸入輸出流所需的所有聲明和定義。它包含四個(gè)標(biāo)準(zhǔn)流對(duì)象:cin、cout、cerr、clog,提供了無格式和格式化的I/O功能。fstream:包含有關(guān)文件處理的信息,提供建立文件和讀寫文件等各種操作的接口。

strstream:用于字符串流的i/o。stdiostream:用于混合使用C和C++的I/O機(jī)制。iomanip:在使用格式化I/O時(shí)包含此頭文件。647.1C++的輸入和輸出(三)C++的輸入輸出流17.1C++的輸入和輸出

(三)C++的輸入輸出流在iostream頭文件中定義的流對(duì)象C++中標(biāo)準(zhǔn)流設(shè)備名稱默認(rèn)設(shè)備默認(rèn)含義cin鍵盤標(biāo)準(zhǔn)輸入cout屏幕標(biāo)準(zhǔn)輸出cerr屏幕標(biāo)準(zhǔn)錯(cuò)誤輸出clog打印機(jī)標(biāo)準(zhǔn)錯(cuò)誤輸出657.1C++的輸入和輸出(三)C++的輸入輸出流C第7章輸入輸出流7.1C++的輸入和輸出7.2標(biāo)準(zhǔn)輸出流7.3標(biāo)準(zhǔn)輸入流7.4文件操作與文件流7.5字符串流66第7章輸入輸出流7.1C++的輸入和輸出147.4文件操作與文件流

(一)文件的概念(二)文件流類和文件流對(duì)象(三)文件的打開與關(guān)閉(四)對(duì)ASCII文件的操作(五)對(duì)二進(jìn)制文件的操作677.4文件操作與文件流(一)文件的概念157.4文件操作與文件流

(一)文件的概念文件:指存儲(chǔ)在外部介質(zhì)上的數(shù)據(jù)集合,操作系統(tǒng)以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理。根據(jù)存儲(chǔ)格式可以把文件分為兩種類型:ASCII碼文件(文本文件)內(nèi)部格式文件(二進(jìn)制文件)。如:100文本:001100010011000000110000---3B二進(jìn)制:01100100-------------------1B687.4文件操作與文件流(一)文件的概念167.4文件操作與文件流

(一)文件的概念(二)文件流類和文件流對(duì)象(三)文件的打開與關(guān)閉(四)對(duì)ASCII文件的操作(五)對(duì)二進(jìn)制文件的操作697.4文件操作與文件流(一)文件的概念177.4文件操作與文件流

(二)文件流類和文件流對(duì)象文件流:以外存文件為輸入輸出對(duì)象的數(shù)據(jù)流。文件流與文件是有區(qū)別的。文件流本身不是文件,只是以文件為輸入輸出對(duì)象的流。

文件流不是若干個(gè)文件組成的流。

C++對(duì)文件的讀寫操作包含3個(gè)基本步驟:建立一個(gè)文件流對(duì)象把文件流對(duì)象與實(shí)際文件相關(guān)聯(lián),稱為打開文件;對(duì)文件流進(jìn)行讀/寫操作;關(guān)閉文件。707.4文件操作與文件流(二)文件流類和文件流對(duì)象17.4文件操作與文件流

(二)文件流類和文件流對(duì)象C++的I/O類庫中定義了三種文件類,專門用于文件操作。ifstream類:從istream類派生,用來支持磁盤文件的輸入。ofstream類:從ostream類派生,用來支持磁盤文件的輸出。fstream類:從iostream類派生,用來支持磁盤文件的輸入和輸出。717.4文件操作與文件流(二)文件流類和文件流對(duì)象17.4文件操作與文件流

(一)文件的概念(二)文件流類和文件流對(duì)象(三)文件的打開與關(guān)閉(四)對(duì)ASCII文件的操作(五)對(duì)二進(jìn)制文件的操作727.4文件操作與文件流(一)文件的概念207.4文件操作與文件流

(三)文件的打開與關(guān)閉打開文件打開文件操作包括建立文件流對(duì)象,與外部文件關(guān)聯(lián),指定文件的打開方式。

打開文件有兩種方式:方式一:先建立流對(duì)象,后調(diào)用open連接外部文件。流類對(duì)象名;對(duì)象名.open(文件名,打開方式);方式二:調(diào)用流類帶參數(shù)的構(gòu)造函數(shù),建立對(duì)象的同時(shí)連接外部文件。流類對(duì)象名(文件名,打開方式);737.4文件操作與文件流(三)文件的打開與關(guān)閉217.4文件操作與文件流

(三)文件的打開與關(guān)閉打開文件方式一:流類對(duì)象名;對(duì)象名.open(文件名,打開方式);方式二:流類對(duì)象名(文件名,打開方式);“流類”是流類庫中定義的文件流類,ifstream用于讀方式打開文件,ofstream用于寫方式打開文件,而fstream用于讀/寫方式打開文件。

“打開方式”是ios定義的標(biāo)識(shí)常量,表示文件的訪問方式(查看表7-7)。

用戶定義標(biāo)識(shí)符外部文件名747.4文件操作與文件流(三)文件的打開與關(guān)閉用戶定7.4文件操作與文件流

(三)文件的打開與關(guān)閉打開文件方式一:流類對(duì)象名;對(duì)象名.open(文件名,打開方式);方式二:流類對(duì)象名(文件名,打開方式);ifstreaminfile;infile.open(“d:\\file1.txt”,ios::in);fstreamrwfile(“d:\\file3.txt”,ios::in|ios::out);757.4文件操作與文件流(三)文件的打開與關(guān)閉237.4文件操作與文件流

(三)文件的打開與關(guān)閉打開文件說明事項(xiàng):新版本C++的I/O類庫中不提供ios::nocreate和ios::noreplace。每個(gè)打開的文件都有一個(gè)文件指針,它的初始位置由I/O方式?jīng)Q定。可以用“|”位或運(yùn)算符對(duì)輸入輸出方式進(jìn)行組合。如果打開失敗,open函數(shù)返回0值??蓳?jù)此測(cè)試打開是否成功。767.4文件操作與文件流(三)文件的打開與關(guān)閉247.4文件操作與文件流

(三)文件的打開與關(guān)閉關(guān)閉文件當(dāng)一個(gè)文件讀寫操作完畢后,應(yīng)及時(shí)關(guān)閉文件。關(guān)閉文件操作主要完成將緩沖區(qū)數(shù)據(jù)完整地寫入文件,添加文件結(jié)束標(biāo)志,切斷流對(duì)象和外部文件的連接等任務(wù)。

關(guān)閉文件方式:對(duì)象名.close();例:777.4文件操作與文件流(三)文件的打開與關(guān)閉257.4文件操作與文件流

#include<iostream>#include<fstream>usingnamespacestd;intmain(){ofstreamoutfile("d:\\f1.txt",ios::out);if(!outfile)cout<<"打開文件錯(cuò)誤!"<<endl;outfile.close();return0;}787.4文件操作與文件流#include<iost7.4文件操作與文件流

(一)文件的概念(二)文件流類和文件流對(duì)象(三)文件的打開與關(guān)閉(四)對(duì)ASCII文件的操作(五)對(duì)二進(jìn)制文件的操作797.4文件操作與文件流(一)文件的概念277.4文件操作與文件流

(四)對(duì)ASCII文件的操作ASCII文件:文件的每一個(gè)字節(jié)中均以ASCII碼形式存放數(shù)據(jù),即一個(gè)字節(jié)存放一個(gè)字符。ASCII文件的讀寫操作有兩種形式:用“<<”和“>>”輸入輸出標(biāo)準(zhǔn)類型的數(shù)據(jù)。用文件流中的put,get,getline等成員函數(shù)進(jìn)行字符的輸入輸出。

例:整形數(shù)組含3個(gè)元素,將他們存到文件中,并取出來,在屏幕上顯示。807.4文件操作與文件流(四)對(duì)ASCII文件的操作7.4文件操作與文件流

(一)文件的概念(二)文件流類和文件流對(duì)象(三)文件的打開與關(guān)閉(四)對(duì)ASCII文件的操作(五)對(duì)二進(jìn)制文件的操作817.4文件操作與文件流(一)文件的概念297.4文件操作與文件流

(五)對(duì)二進(jìn)制文件的操作二進(jìn)制文件:將內(nèi)存中數(shù)據(jù)存儲(chǔ)形式不加轉(zhuǎn)換地傳送到磁盤文件中,即以二進(jìn)制形式存儲(chǔ)信息。打開二進(jìn)制文件時(shí),必須要指定ios::binary。用成員函數(shù)read和write讀寫二進(jìn)制文件istream&read(char*buffer,intlen);ostream&write(constchar*buffer,intlen);

指向內(nèi)存中一段存儲(chǔ)空間讀寫的字節(jié)數(shù)827.4文件操作與文件流(五)對(duì)二進(jìn)制文件的操作指向7.4文件操作與文件流(五)對(duì)二進(jìn)制文件的操作例:將三個(gè)學(xué)生的信息存到二進(jìn)制文件中,學(xué)生定義如下:structstudent{charname[20];intnum;intage;charsex;};837.4文件操作與文件流(五)對(duì)二進(jìn)制文件的操作317.4文件操作與文件流

(五)對(duì)二進(jìn)制文件的操作與文件指針相關(guān)的流成員函數(shù)(P254表7.7)文件指針相對(duì)移動(dòng)函數(shù)

移動(dòng)讀指針:seekg();

移動(dòng)寫指針:seekp();847.4文件操作與文件流(五)對(duì)二進(jìn)制文件的操作32練習(xí)例7.13從鍵盤中讀入一行字符,將其中的字母字符依次存入f2.dat中,再將文件中的內(nèi)容讀入程序,將小寫字母改成大寫字母,存入f3.dat中。思考:何種文件形式?閱讀分析例7.1685練習(xí)例7.13從鍵盤中讀入一行字符,將其中實(shí)驗(yàn)十一文件操作實(shí)驗(yàn)內(nèi)容:課后第5題實(shí)驗(yàn)時(shí)間:周五三單元實(shí)驗(yàn)報(bào)告:十六周周二一單元上交86實(shí)驗(yàn)十一文件操作實(shí)驗(yàn)內(nèi)容:課后第5題34小結(jié)(一)文件的概念(二)文件流類和文件流對(duì)象(三)文件的打開與關(guān)閉(四)對(duì)ASCII文件的操作(五)對(duì)二進(jìn)制文件的操作87小結(jié)(一)文件的概念357.4文件操作與文件流

(五)對(duì)二進(jìn)制文件的操作與文件指針相關(guān)的流成員函數(shù)參照位置:ios::cur當(dāng)前位置ios::end結(jié)尾ios:beg開頭例:infile.seekg(100)infile.seekg(-50,ios::cur)Outfile.seekg(10,ios::beg)887.4文件操作與文件流(五)對(duì)二進(jìn)制文件的操作36第7章輸入輸出流7.1C++的輸入和輸出7.2標(biāo)準(zhǔn)輸出流7.3標(biāo)準(zhǔn)輸入流7.4文件操作與文件流7.5字符串流89第7章輸入輸出流7.1C++的輸入和輸出377.2標(biāo)準(zhǔn)輸出流

(一)cout、cerr、clog流對(duì)象cout它是ostream流類的對(duì)象,表示流向顯示器的數(shù)據(jù),用流插入運(yùn)算符“<<”順序加入。用“cout<<”可以直接輸出基本類型數(shù)據(jù)。

例:inta,b;cout<<a<<b;如果想輸出用戶定義數(shù)據(jù)類型,必須先進(jìn)行運(yùn)算符的重載。

例:定義complex類,實(shí)現(xiàn)該對(duì)象的輸出。

complexc1;cout<<c1;

ostream&opeator<<(ostream&,complex&);

907.2標(biāo)準(zhǔn)輸出流(一)cout、cerr、clog7.2標(biāo)準(zhǔn)輸出流

(一)cout、cerr、clog流對(duì)象cerr:是標(biāo)準(zhǔn)出錯(cuò)流,被指定為與顯示器關(guān)聯(lián),它的作用是向標(biāo)準(zhǔn)出錯(cuò)設(shè)備輸出有關(guān)出錯(cuò)信息。例:(查看P227例7.1)clog:是標(biāo)準(zhǔn)出錯(cuò)流,作用也是在終端顯示器上顯示出錯(cuò)信息。cerr與clog的區(qū)別:cerr不經(jīng)過緩沖區(qū),直接向顯示器輸出有關(guān)信息。clog中的信息存放在緩沖區(qū)中,緩沖區(qū)滿或遇到endl時(shí)才向顯示器輸出。

917.2標(biāo)準(zhǔn)輸出流(一)cout、cerr、clog7.2標(biāo)準(zhǔn)輸出流

(二)格式輸出使用控制符控制輸出格式(查看P228表7.3)cout<<dec<<a<<endl;例:(查看P228例7.2)用流對(duì)象的成員函數(shù)控制輸出格式(查看P229表7.4)cout.width(10);例:(查看P230例7.3)927.2標(biāo)準(zhǔn)輸出流(二)格式輸出407.2標(biāo)準(zhǔn)輸出流

(三)用流成員函數(shù)put輸出字符put:專門用于輸出單個(gè)字符的成員函數(shù)。例如:cout.put(a);可以在一個(gè)語句中連續(xù)調(diào)用put函數(shù)。例:(查看P232例7.4)putchar函數(shù),C語言中使用的,也能輸出一個(gè)字符。在stdio.h頭文件中定義。937.2標(biāo)準(zhǔn)輸出流(三)用流成員函數(shù)put輸出字符4第7章輸入輸出流7.1C++的輸入和輸出7.2標(biāo)準(zhǔn)輸出流7.3標(biāo)準(zhǔn)輸入流7.4文件操作與文件流7.5字符串流94第7章輸入輸出流7.1C++的輸入和輸出427.3標(biāo)準(zhǔn)輸入流

(一)cin流cin是istream類的對(duì)象,它從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)獲取數(shù)據(jù),程序中的變量通過流提取符“>>”從流中提取數(shù)據(jù)。流提取符“>>”從流中提取數(shù)據(jù)時(shí)通常跳過輸入流中的空格、Tab鍵、換行符等空白字符。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論