九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

C程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出

上傳人:仙*** 文檔編號(hào):153446350 上傳時(shí)間:2022-09-19 格式:PPT 頁(yè)數(shù):59 大小:145.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
C程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出_第1頁(yè)
第1頁(yè) / 共59頁(yè)
C程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出_第2頁(yè)
第2頁(yè) / 共59頁(yè)
C程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出_第3頁(yè)
第3頁(yè) / 共59頁(yè)

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《C程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出》由會(huì)員分享,可在線閱讀,更多相關(guān)《C程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出(59頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出第第10章章 流類(lèi)庫(kù)與輸入輸出流類(lèi)庫(kù)與輸入輸出n10.1 I/O標(biāo)準(zhǔn)流類(lèi)標(biāo)準(zhǔn)流類(lèi)n10.2 格式化格式化I/On10.3 文件流文件流n10.4 字符串流字符串流C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出10.1 I/O標(biāo)準(zhǔn)流類(lèi)標(biāo)準(zhǔn)流類(lèi)n預(yù)定義流預(yù)定義流nC+中的流類(lèi)庫(kù)中的流類(lèi)庫(kù)返回首頁(yè)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n在在C+語(yǔ)言中,數(shù)據(jù)的輸入和輸出(簡(jiǎn)寫(xiě)為語(yǔ)言中,數(shù)據(jù)的輸入和輸出(簡(jiǎn)寫(xiě)為I/O)包括對(duì)標(biāo)準(zhǔn)輸入設(shè)備鍵盤(pán)和標(biāo)準(zhǔn)輸出設(shè)備顯示包括對(duì)標(biāo)準(zhǔn)輸入設(shè)備鍵盤(pán)和標(biāo)準(zhǔn)輸出設(shè)備顯示器、對(duì)在外存磁盤(pán)上的文件和對(duì)內(nèi)存中指定的器、對(duì)在外存磁盤(pán)上的

2、文件和對(duì)內(nèi)存中指定的字符串存儲(chǔ)空間進(jìn)行輸入輸出這三個(gè)方面。對(duì)字符串存儲(chǔ)空間進(jìn)行輸入輸出這三個(gè)方面。對(duì)標(biāo)準(zhǔn)輸入設(shè)備和標(biāo)準(zhǔn)輸出設(shè)備的輸入輸出簡(jiǎn)稱標(biāo)準(zhǔn)輸入設(shè)備和標(biāo)準(zhǔn)輸出設(shè)備的輸入輸出簡(jiǎn)稱為標(biāo)準(zhǔn)為標(biāo)準(zhǔn)I/O,對(duì)在外存磁盤(pán)上文件的輸入輸出簡(jiǎn)對(duì)在外存磁盤(pán)上文件的輸入輸出簡(jiǎn)稱為文件稱為文件I/O,對(duì)內(nèi)存中指定的字符串存儲(chǔ)空間對(duì)內(nèi)存中指定的字符串存儲(chǔ)空間的輸入輸出簡(jiǎn)稱為串的輸入輸出簡(jiǎn)稱為串I/O。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出nC+中把數(shù)據(jù)之間的傳輸操作稱作流。在中把數(shù)據(jù)之間的傳輸操作稱作流。在C+中,流既可以表示數(shù)據(jù)從內(nèi)存?zhèn)魉偷侥硞€(gè)載體中,流既可以表示數(shù)據(jù)從內(nèi)存?zhèn)魉偷侥硞€(gè)載體或設(shè)備中,即輸出流

3、;也可以表示數(shù)據(jù)從某個(gè)或設(shè)備中,即輸出流;也可以表示數(shù)據(jù)從某個(gè)載體或設(shè)備傳送到內(nèi)存緩沖區(qū)變量中,即輸入載體或設(shè)備傳送到內(nèi)存緩沖區(qū)變量中,即輸入流。在進(jìn)行流。在進(jìn)行I/O操作時(shí),首先打開(kāi)操作,使流和操作時(shí),首先打開(kāi)操作,使流和文件發(fā)生聯(lián)系,建立聯(lián)系后的文件才允許數(shù)據(jù)文件發(fā)生聯(lián)系,建立聯(lián)系后的文件才允許數(shù)據(jù)流入或流出,輸入或輸出結(jié)束后,使用關(guān)閉操流入或流出,輸入或輸出結(jié)束后,使用關(guān)閉操作使文件與流斷開(kāi)聯(lián)系。作使文件與流斷開(kāi)聯(lián)系。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出nC+中所有流都是相同的,但文件可以不同。中所有流都是相同的,但文件可以不同。使用流以后,程序用流統(tǒng)一對(duì)各種計(jì)算機(jī)設(shè)備使用流以后

4、,程序用流統(tǒng)一對(duì)各種計(jì)算機(jī)設(shè)備和文件進(jìn)行操作,使程序與設(shè)備、程序與文件和文件進(jìn)行操作,使程序與設(shè)備、程序與文件無(wú)關(guān),從而提高了程序設(shè)計(jì)的通用性和靈活性。無(wú)關(guān),從而提高了程序設(shè)計(jì)的通用性和靈活性。也就是說(shuō),無(wú)論與流相聯(lián)系的實(shí)際物理設(shè)備差也就是說(shuō),無(wú)論與流相聯(lián)系的實(shí)際物理設(shè)備差別有多大,流都采用相同的方式運(yùn)行。這種機(jī)別有多大,流都采用相同的方式運(yùn)行。這種機(jī)制使得流可以跨越物理設(shè)備平臺(tái),實(shí)現(xiàn)流的透制使得流可以跨越物理設(shè)備平臺(tái),實(shí)現(xiàn)流的透明運(yùn)作,而與實(shí)際的物理設(shè)備無(wú)關(guān)。例如,往明運(yùn)作,而與實(shí)際的物理設(shè)備無(wú)關(guān)。例如,往顯示器上輸出字符和向磁盤(pán)文件或打印機(jī)輸出顯示器上輸出字符和向磁盤(pán)文件或打印機(jī)輸出字符,

5、盡管接受輸出的物理設(shè)備不同,但具體字符,盡管接受輸出的物理設(shè)備不同,但具體操作過(guò)程是相同的。操作過(guò)程是相同的。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出預(yù)定義流預(yù)定義流n1cout在在ostream輸出流類(lèi)中定義有對(duì)左移操作符輸出流類(lèi)中定義有對(duì)左移操作符重載的一組重載的一組公用成員函數(shù),函數(shù)的具體聲明格式為:公用成員函數(shù),函數(shù)的具體聲明格式為:ostream&operator重載的一組重載的一組公用成員函數(shù),函數(shù)的具體聲明格式為:公用成員函數(shù),函數(shù)的具體聲明格式為:istream&operator(簡(jiǎn)單類(lèi)型標(biāo)識(shí)符簡(jiǎn)單類(lèi)型標(biāo)識(shí)符&);C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n3cerrce

6、rr類(lèi)似標(biāo)準(zhǔn)錯(cuò)誤文件。類(lèi)似標(biāo)準(zhǔn)錯(cuò)誤文件。cerr與與cout的差別在于:的差別在于:(1)cerr不能重定向。不能重定向。(2)cerr不能被緩沖,它的輸出總是直接傳達(dá)到標(biāo)準(zhǔn)輸不能被緩沖,它的輸出總是直接傳達(dá)到標(biāo)準(zhǔn)輸出設(shè)備上。出設(shè)備上。4clogclog是不能重定向的,但是可以被緩沖。在某些系統(tǒng)中,是不能重定向的,但是可以被緩沖。在某些系統(tǒng)中,由于緩沖,使用由于緩沖,使用clog代替代替cerr可以改進(jìn)顯示速度。可以改進(jìn)顯示速度。clog Error n;返回本節(jié)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出C+中的流類(lèi)庫(kù)中的流類(lèi)庫(kù)nC+語(yǔ)言系統(tǒng)為實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出定義了一個(gè)龐大的類(lèi)庫(kù),語(yǔ)言系

7、統(tǒng)為實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出定義了一個(gè)龐大的類(lèi)庫(kù),它包括的類(lèi)主要有它包括的類(lèi)主要有ios,istream,ostream,iostream,ifstream,ofstream,fstream,istrstream,ostrstream和和strstream等。等。n其中其中ios為根基類(lèi),它直接派生四個(gè)類(lèi):輸入流類(lèi)為根基類(lèi),它直接派生四個(gè)類(lèi):輸入流類(lèi)istream、輸出輸出流類(lèi)流類(lèi)ostream、文件流基類(lèi)文件流基類(lèi)fstreambase和字符串流基類(lèi)和字符串流基類(lèi)strstreambase,輸入文件流類(lèi)輸入文件流類(lèi)ifstream同時(shí)繼承了輸入流類(lèi)和文同時(shí)繼承了輸入流類(lèi)和文件流基類(lèi)(當(dāng)然對(duì)于根基

8、類(lèi)是間接繼承),輸出文件流類(lèi)件流基類(lèi)(當(dāng)然對(duì)于根基類(lèi)是間接繼承),輸出文件流類(lèi)ofstream同時(shí)繼承了輸出流類(lèi)和文件流基類(lèi),輸入字符串流類(lèi)同時(shí)繼承了輸出流類(lèi)和文件流基類(lèi),輸入字符串流類(lèi)istrstream同時(shí)繼承了輸入流類(lèi)和字符串流基類(lèi),輸出字符串流同時(shí)繼承了輸入流類(lèi)和字符串流基類(lèi),輸出字符串流類(lèi)類(lèi)ostrstream同時(shí)繼承了輸出流類(lèi)和字符串流基類(lèi),輸入輸出流同時(shí)繼承了輸出流類(lèi)和字符串流基類(lèi),輸入輸出流類(lèi)類(lèi)iostream同時(shí)繼承了輸入流類(lèi)和輸出流類(lèi),輸入輸出文件流類(lèi)同時(shí)繼承了輸入流類(lèi)和輸出流類(lèi),輸入輸出文件流類(lèi)fstream同時(shí)繼承了輸入輸出流類(lèi)和文件流基類(lèi),輸入輸出字符串同時(shí)繼承了輸入

9、輸出流類(lèi)和文件流基類(lèi),輸入輸出字符串流類(lèi)流類(lèi)strstream同時(shí)繼承了輸入輸出流類(lèi)和字符串流基類(lèi)。同時(shí)繼承了輸入輸出流類(lèi)和字符串流基類(lèi)。返回本節(jié)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出10.2 格式化格式化I/Onios類(lèi)中的枚舉常量類(lèi)中的枚舉常量n使用使用ios成員函數(shù)成員函數(shù)n使用使用I/O操作符操作符n檢測(cè)流操作的錯(cuò)誤檢測(cè)流操作的錯(cuò)誤返回首頁(yè)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出類(lèi)中的枚舉常量類(lèi)中的枚舉常量n在根基類(lèi)在根基類(lèi)ios中定義有三個(gè)用戶需要使用的枚舉類(lèi)型,由中定義有三個(gè)用戶需要使用的枚舉類(lèi)型,由于它們是在公用成員部分定義的,所以其中的每個(gè)枚舉類(lèi)于它們是在公用成員部分

10、定義的,所以其中的每個(gè)枚舉類(lèi)型常量在加上型常量在加上ios:前綴后都可以為本類(lèi)成員函數(shù)和所有外前綴后都可以為本類(lèi)成員函數(shù)和所有外部函數(shù)訪問(wèn)。部函數(shù)訪問(wèn)。n在三個(gè)枚舉類(lèi)型中有一個(gè)無(wú)名枚舉類(lèi)型,其中定義的每個(gè)在三個(gè)枚舉類(lèi)型中有一個(gè)無(wú)名枚舉類(lèi)型,其中定義的每個(gè)枚舉常量都是用于設(shè)置控制輸入輸出格式的標(biāo)志使用的。枚舉常量都是用于設(shè)置控制輸入輸出格式的標(biāo)志使用的。該枚舉類(lèi)型定義如下:該枚舉類(lèi)型定義如下:enum skipws,left,right,internal,dec,oct,hex,showbase,showpoint,uppercase,showpos,scientific,fixed,unitb

11、uf,stdio;C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n各枚舉常量的含義如下:各枚舉常量的含義如下:n(1)skipws。n(2)left,right,internal。n(3)dec,oct,hex。n(4)showbase。n(5)showpoint。n(6)uppercase。n(7)showpos。n(8)scientific,fixed。n(9)unitbuf,stdio。返回本節(jié)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出使用使用ios成員函數(shù)成員函數(shù)nios類(lèi)提供成員函數(shù)對(duì)流的狀態(tài)進(jìn)行檢測(cè)和進(jìn)行輸入輸出格式控制等操類(lèi)提供成員函數(shù)對(duì)流的狀態(tài)進(jìn)行檢測(cè)和進(jìn)行輸入輸出格式控制等操

12、作,每個(gè)成員函數(shù)的聲明格式和簡(jiǎn)要說(shuō)明如下:作,每個(gè)成員函數(shù)的聲明格式和簡(jiǎn)要說(shuō)明如下:int bad();/操作出錯(cuò)時(shí)返回非操作出錯(cuò)時(shí)返回非0值值int eof();/讀取到流中最后的文件結(jié)束符時(shí)返回非讀取到流中最后的文件結(jié)束符時(shí)返回非0值值int fail();/操作失敗時(shí)返回非操作失敗時(shí)返回非0值值void clear();/清除清除bad,eof和和fail所對(duì)應(yīng)的標(biāo)志狀態(tài),使所對(duì)應(yīng)的標(biāo)志狀態(tài),使之恢復(fù)為正常狀態(tài)之恢復(fù)為正常狀態(tài) /值值0,使,使good標(biāo)志狀態(tài)恢復(fù)為標(biāo)志狀態(tài)恢復(fù)為1char fill();/返回當(dāng)前使用的填充字符返回當(dāng)前使用的填充字符char fill(char c);/

13、重新設(shè)置流中用于輸出數(shù)據(jù)的填充字重新設(shè)置流中用于輸出數(shù)據(jù)的填充字符為符為c的值,返回的值,返回 /此前的填充字符。系統(tǒng)預(yù)設(shè)置填充字符為空格此前的填充字符。系統(tǒng)預(yù)設(shè)置填充字符為空格long flags();/返回當(dāng)前用于返回當(dāng)前用于I/O控制的格式狀態(tài)字控制的格式狀態(tài)字C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出long flags(long f);/重新設(shè)置格式狀態(tài)字為重新設(shè)置格式狀態(tài)字為f的值,返回此前的格式狀態(tài)字的值,返回此前的格式狀態(tài)字int good();/操作正常時(shí)返回非操作正常時(shí)返回非0值,當(dāng)操作出錯(cuò)、失敗和讀到文件值,當(dāng)操作出錯(cuò)、失敗和讀到文件 /結(jié)束符時(shí)均為不正常,則返回結(jié)束符

14、時(shí)均為不正常,則返回0int precision();/返回浮點(diǎn)數(shù)輸出精度,即輸出的有效數(shù)字的位數(shù)返回浮點(diǎn)數(shù)輸出精度,即輸出的有效數(shù)字的位數(shù)int precision(int n);/設(shè)置浮點(diǎn)數(shù)的輸出精度為設(shè)置浮點(diǎn)數(shù)的輸出精度為n,返回此前的輸出精度。系統(tǒng)預(yù)設(shè)返回此前的輸出精度。系統(tǒng)預(yù)設(shè) /置的輸出精度為置的輸出精度為6,即輸出的浮點(diǎn)數(shù)最多具有,即輸出的浮點(diǎn)數(shù)最多具有6位為有效數(shù)字位為有效數(shù)字int rdstate();/操作正常時(shí)返回操作正常時(shí)返回0,否則返回非,否則返回非0值,它與值,它與good()正好相反正好相反long setf(long f);/根據(jù)參數(shù)根據(jù)參數(shù)f設(shè)置相應(yīng)的格式化標(biāo)

15、志,返回此前的設(shè)置。該參數(shù)設(shè)置相應(yīng)的格式化標(biāo)志,返回此前的設(shè)置。該參數(shù)/f所對(duì)應(yīng)的實(shí)參為無(wú)名枚舉類(lèi)型中的枚舉常量(又稱格式化常所對(duì)應(yīng)的實(shí)參為無(wú)名枚舉類(lèi)型中的枚舉常量(又稱格式化常/量),可以同時(shí)使用一個(gè)或多個(gè)常量,每?jī)蓚€(gè)常量之間要用按位或量),可以同時(shí)使用一個(gè)或多個(gè)常量,每?jī)蓚€(gè)常量之間要用按位或/操作符連接。如需要左對(duì)齊輸出,并使數(shù)值中的字母大寫(xiě)時(shí),操作符連接。如需要左對(duì)齊輸出,并使數(shù)值中的字母大寫(xiě)時(shí),/則調(diào)用該函數(shù)的實(shí)參為則調(diào)用該函數(shù)的實(shí)參為ios:left|ios:uppercaseC+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出long unsetf(long f);/根據(jù)參數(shù)根據(jù)參數(shù)f清除

16、相應(yīng)的格式化標(biāo)清除相應(yīng)的格式化標(biāo)志,返回此前的設(shè)置。如要志,返回此前的設(shè)置。如要/清除此前的左對(duì)齊輸出設(shè)置,恢復(fù)默認(rèn)的右對(duì)齊輸出設(shè)置,清除此前的左對(duì)齊輸出設(shè)置,恢復(fù)默認(rèn)的右對(duì)齊輸出設(shè)置,/則調(diào)用該函數(shù)的實(shí)參為則調(diào)用該函數(shù)的實(shí)參為ios:leftint width();/返回當(dāng)前的輸出域?qū)?。若返回?cái)?shù)值返回當(dāng)前的輸出域?qū)?。若返回?cái)?shù)值0則表則表明沒(méi)為剛才輸出的數(shù)明沒(méi)為剛才輸出的數(shù)/值設(shè)置輸出域?qū)?。輸出域?qū)捠侵篙敵龅闹翟诹髦兴加械淖止?jié)值設(shè)置輸出域?qū)?。輸出域?qū)捠侵篙敵龅闹翟诹髦兴加械淖止?jié)數(shù)數(shù)int width(int w);/設(shè)置下一個(gè)數(shù)據(jù)值的輸出域?qū)挒樵O(shè)置下一個(gè)數(shù)據(jù)值的輸出域?qū)挒閣,返回為輸出上一

17、個(gè)數(shù)據(jù)值返回為輸出上一個(gè)數(shù)據(jù)值/所規(guī)定的域?qū)?,若無(wú)規(guī)定則返回所規(guī)定的域?qū)?,若無(wú)規(guī)定則返回0。注意:此設(shè)置不是一直有。注意:此設(shè)置不是一直有/效,而只是對(duì)下一個(gè)輸出數(shù)據(jù)有效效,而只是對(duì)下一個(gè)輸出數(shù)據(jù)有效C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n例例10-2:給出以下程序的運(yùn)行結(jié)果。給出以下程序的運(yùn)行結(jié)果。#includevoid main()int x=123;double y=-3.456789;coutx=;cout.width(10);/設(shè)置輸出下一個(gè)數(shù)設(shè)置輸出下一個(gè)數(shù)據(jù)的域?qū)挒閾?jù)的域?qū)挒?0 coutx;/按默認(rèn)的右對(duì)齊輸出,剩余按默認(rèn)的右對(duì)齊輸出,剩余位置填充空格字符位置填充空格字

18、符 couty=;cout.width(10);/設(shè)置輸出下一個(gè)數(shù)設(shè)置輸出下一個(gè)數(shù)據(jù)的域?qū)挒閾?jù)的域?qū)挒?0 coutyendl;cout.setf(ios:left);/設(shè)置按左對(duì)齊輸出設(shè)置按左對(duì)齊輸出C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出 coutx=;cout.width(10);coutx;couty=;cout.width(10);coutyendl;cout.fill(*);/設(shè)置填充字符為設(shè)置填充字符為*cout.precision(3);/設(shè)置浮點(diǎn)數(shù)輸出精度為設(shè)置浮點(diǎn)數(shù)輸出精度為3 cout.setf(ios:showpos);/設(shè)置正數(shù)的正號(hào)輸出設(shè)置正數(shù)的正號(hào)輸出 cou

19、tx=;cout.width(10);coutx;couty=;cout.width(10);coutyendl;C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出此程序運(yùn)行結(jié)果如下:此程序運(yùn)行結(jié)果如下:x=123y=-3.45679x=123 y=-3.45679x=+123*y=-3.46*C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n例例10-3:給出以下程序的運(yùn)行結(jié)果。給出以下程序的運(yùn)行結(jié)果。#includevoid main()float x=12,y=-3.456;coutx yendl;cout.setf(ios:showpoint);/強(qiáng)制顯示小數(shù)點(diǎn)和無(wú)效強(qiáng)制顯示小數(shù)點(diǎn)和無(wú)效0 co

20、utx yendl;cout.unsetf(ios:showpoint);/恢復(fù)默認(rèn)輸出恢復(fù)默認(rèn)輸出 cout.setf(ios:scientific);/設(shè)置按科學(xué)表示法輸出設(shè)置按科學(xué)表示法輸出 coutx yendl;cout.setf(ios:fixed);/設(shè)置按定點(diǎn)表示法輸出設(shè)置按定點(diǎn)表示法輸出 coutx yendl;C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出程序運(yùn)行結(jié)果如下:程序運(yùn)行結(jié)果如下:12-3.45612.0000-3.456001.200000e+001-3.456000e+00012-3.456返回本節(jié)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出使用使用I/O操作符

21、操作符n數(shù)據(jù)輸入輸出的格式控制還有更簡(jiǎn)便的形式,數(shù)據(jù)輸入輸出的格式控制還有更簡(jiǎn)便的形式,就是使用系統(tǒng)頭文件就是使用系統(tǒng)頭文件iomanip.h中提供的操作中提供的操作符。使用這些操縱符不需要調(diào)用成員函數(shù),只符。使用這些操縱符不需要調(diào)用成員函數(shù),只要把它們作為插入操作符要把它們作為插入操作符)的輸出對(duì)象即可。)的輸出對(duì)象即可。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n例例10-4:給出以下程序的運(yùn)行結(jié)果。給出以下程序的運(yùn)行結(jié)果。#include /因因iomanip.h中包含有中包含有iostream.h,所以該命令所以該命令可省略可省略#includevoid main()int x=12

22、,y=345,z=6789;coutx y zendl;/按十進(jìn)制輸出按十進(jìn)制輸出 coutoctx y zendl;/按八進(jìn)制輸出按八進(jìn)制輸出 couthexx y zendl;/按十六進(jìn)制輸出按十六進(jìn)制輸出 coutsetiosflags(ios:showbase|ios:uppercase);/設(shè)置基指示符和數(shù)值中的字母大寫(xiě)輸出設(shè)置基指示符和數(shù)值中的字母大寫(xiě)輸出 coutx y zendl;/仍按十六進(jìn)制輸出仍按十六進(jìn)制輸出 coutresetiosflags(ios:showbase|ios:uppercase);/取消基指示符和數(shù)值中的字母大寫(xiě)輸出取消基指示符和數(shù)值中的字母大寫(xiě)輸出

23、coutx y zendl;/仍按十六進(jìn)制輸出仍按十六進(jìn)制輸出 coutdecx y zendl;/按十進(jìn)制輸出按十進(jìn)制輸出C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n例例10-5:給出以下程序的運(yùn)行結(jié)果。給出以下程序的運(yùn)行結(jié)果。#include#includevoid main()int x=123;double y=-3.456789;coutx=setw(10)x;couty=setw(10)yendl;coutsetiosflags(ios:left);/設(shè)置按左對(duì)齊輸出設(shè)置按左對(duì)齊輸出 coutx=setw(10)x;couty=setw(10)yendl;C+程序設(shè)計(jì)電子教案第1

24、0章流類(lèi)庫(kù)與輸入輸出coutsetfill(*);/設(shè)置填充字符為設(shè)置填充字符為*coutsetprecision(3);/設(shè)置浮點(diǎn)數(shù)輸出精度為設(shè)置浮點(diǎn)數(shù)輸出精度為3 coutsetiosflags(ios:showpos);/設(shè)置正數(shù)的正號(hào)輸出設(shè)置正數(shù)的正號(hào)輸出 coutx=setw(10)x;couty=setw(10)yendl;coutresetiosflags(ios:left|ios:showpos);coutsetfill();返回本節(jié)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出檢測(cè)流操作的錯(cuò)誤檢測(cè)流操作的錯(cuò)誤在在I/O流的操作過(guò)程中可能出現(xiàn)各種錯(cuò)誤,每一個(gè)流都有一個(gè)狀態(tài)標(biāo)志字,

25、以指示是流的操作過(guò)程中可能出現(xiàn)各種錯(cuò)誤,每一個(gè)流都有一個(gè)狀態(tài)標(biāo)志字,以指示是否發(fā)生了錯(cuò)誤以及出現(xiàn)了哪種類(lèi)型的錯(cuò)誤,這種處理技術(shù)與格式控制標(biāo)志字是否發(fā)生了錯(cuò)誤以及出現(xiàn)了哪種類(lèi)型的錯(cuò)誤,這種處理技術(shù)與格式控制標(biāo)志字是相同的。相同的。ios類(lèi)定義了以下枚舉類(lèi)型:類(lèi)定義了以下枚舉類(lèi)型:enum io_state goodbit=0 x00,/不設(shè)置任何位,一切正常不設(shè)置任何位,一切正常 eofbit =0 x01,/輸入流已經(jīng)結(jié)束,無(wú)字符可讀入輸入流已經(jīng)結(jié)束,無(wú)字符可讀入 failbit =0 x02,/上次讀上次讀/寫(xiě)操作失敗,但流仍可使用寫(xiě)操作失敗,但流仍可使用 badbit =0 x04,/試圖

26、作無(wú)效的讀試圖作無(wú)效的讀/寫(xiě)操作,流不再可用寫(xiě)操作,流不再可用 hardfail=0 x80 /不可恢復(fù)的嚴(yán)重錯(cuò)誤不可恢復(fù)的嚴(yán)重錯(cuò)誤;返回本節(jié)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出10.3 文件流文件流n文件的概念文件的概念n文件的打開(kāi)與關(guān)閉文件的打開(kāi)與關(guān)閉n文件的讀寫(xiě)文件的讀寫(xiě)返回首頁(yè)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出文件的概念文件的概念n在磁盤(pán)上保存的信息是按文件的形式組織的,在磁盤(pán)上保存的信息是按文件的形式組織的,每個(gè)文件都對(duì)應(yīng)一個(gè)文件名,并且屬于某個(gè)物每個(gè)文件都對(duì)應(yīng)一個(gè)文件名,并且屬于某個(gè)物理盤(pán)或邏輯盤(pán)的目錄層次結(jié)構(gòu)中一個(gè)確定的目理盤(pán)或邏輯盤(pán)的目錄層次結(jié)構(gòu)中一個(gè)確定的目

27、錄之下。一個(gè)文件名由文件主名和擴(kuò)展名兩部錄之下。一個(gè)文件名由文件主名和擴(kuò)展名兩部分組成,它們之間用圓點(diǎn)(即小數(shù)點(diǎn))分開(kāi),分組成,它們之間用圓點(diǎn)(即小數(shù)點(diǎn))分開(kāi),擴(kuò)展名可以省略,當(dāng)省略時(shí)也要省略掉前面的擴(kuò)展名可以省略,當(dāng)省略時(shí)也要省略掉前面的圓點(diǎn)。文件主名是由用戶命名的一個(gè)有效的圓點(diǎn)。文件主名是由用戶命名的一個(gè)有效的C+標(biāo)識(shí)符,為了同其他軟件系統(tǒng)兼容,一般標(biāo)識(shí)符,為了同其他軟件系統(tǒng)兼容,一般讓文件主名為不超過(guò)讓文件主名為不超過(guò)8個(gè)有效字符的標(biāo)識(shí)符,個(gè)有效字符的標(biāo)識(shí)符,同時(shí)為了便于記憶和使用,最好使文件主名的同時(shí)為了便于記憶和使用,最好使文件主名的含義與所存的文件內(nèi)容相一致。含義與所存的文件內(nèi)容相

28、一致。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n在在C+程序中使用的保存數(shù)據(jù)的文件按存儲(chǔ)格程序中使用的保存數(shù)據(jù)的文件按存儲(chǔ)格式分為兩種類(lèi)型,一種為字符格式文件,簡(jiǎn)稱式分為兩種類(lèi)型,一種為字符格式文件,簡(jiǎn)稱字符文件,另一種為內(nèi)部格式文件,簡(jiǎn)稱字節(jié)字符文件,另一種為內(nèi)部格式文件,簡(jiǎn)稱字節(jié)文件。字符文件又稱文件。字符文件又稱ASCII碼文件或文本文件,碼文件或文本文件,字節(jié)文件又稱二進(jìn)制文件。字節(jié)文件又稱二進(jìn)制文件。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出nC+程序文件,利用其他各種語(yǔ)言編寫(xiě)的程序程序文件,利用其他各種語(yǔ)言編寫(xiě)的程序文件,用戶建立的各種文本文件,各種軟件系文件,用戶建立的各種

29、文本文件,各種軟件系統(tǒng)中的幫助文件等,因都是統(tǒng)中的幫助文件等,因都是ASCII碼文件,所碼文件,所以都可以在以都可以在C+中作為字符文件使用。中作為字符文件使用。nC+系統(tǒng)把各種外部設(shè)備也看作為相應(yīng)的文件。系統(tǒng)把各種外部設(shè)備也看作為相應(yīng)的文件。如把標(biāo)準(zhǔn)輸入設(shè)備鍵盤(pán)和標(biāo)準(zhǔn)輸出設(shè)備顯示器如把標(biāo)準(zhǔn)輸入設(shè)備鍵盤(pán)和標(biāo)準(zhǔn)輸出設(shè)備顯示器看作為標(biāo)準(zhǔn)輸入輸出文件,其文件名(又稱設(shè)看作為標(biāo)準(zhǔn)輸入輸出文件,其文件名(又稱設(shè)備名)為備名)為con,當(dāng)向它輸出信息時(shí)就是輸出到當(dāng)向它輸出信息時(shí)就是輸出到顯示器,當(dāng)從它輸入信息時(shí)就是從鍵盤(pán)輸入。顯示器,當(dāng)從它輸入信息時(shí)就是從鍵盤(pán)輸入。返回本節(jié)C+程序設(shè)計(jì)電子教案第10章流類(lèi)

30、庫(kù)與輸入輸出文件的打開(kāi)與關(guān)閉文件的打開(kāi)與關(guān)閉流可以分為流可以分為3類(lèi):輸入流、輸出流以及輸入類(lèi):輸入流、輸出流以及輸入/輸出輸出流,相應(yīng)地必須將流說(shuō)明為流,相應(yīng)地必須將流說(shuō)明為ifstream、ofstream以及以及fstream類(lèi)的對(duì)象。例如:類(lèi)的對(duì)象。例如:ifstream ifile;/說(shuō)明一個(gè)輸入流說(shuō)明一個(gè)輸入流ofstream ofile;/說(shuō)明一個(gè)輸出流說(shuō)明一個(gè)輸出流fstream iofile;/說(shuō)明一個(gè)輸入說(shuō)明一個(gè)輸入/輸出流輸出流C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出說(shuō)明了流對(duì)象之后,可使用函數(shù)說(shuō)明了流對(duì)象之后,可使用函數(shù)open()打開(kāi)文件。打開(kāi)文件。文件的打開(kāi)即是

31、在流與文件之間建立一個(gè)連接。文件的打開(kāi)即是在流與文件之間建立一個(gè)連接。open()的函數(shù)原型為:的函數(shù)原型為:void open(const char*mode,int prot=);C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出ios:in 打開(kāi)文件進(jìn)行讀操作打開(kāi)文件進(jìn)行讀操作ios:out 打開(kāi)文件進(jìn)行寫(xiě)操作打開(kāi)文件進(jìn)行寫(xiě)操作ios:ate 打開(kāi)時(shí)文件指針定位到文件尾打開(kāi)時(shí)文件指針定位到文件尾ios:app 添加模式,所有增加都在文件添加模式,所有增加都在文件尾部進(jìn)行尾部進(jìn)行ios:trunc 如果文件已存在則清空原文件如果文件已存在則清空原文件ios:nocreate 如果文件不存在則打開(kāi)

32、失敗如果文件不存在則打開(kāi)失敗ios:noreplace 如果文件存在則打開(kāi)失敗如果文件存在則打開(kāi)失敗ios:binary 二進(jìn)制文件(非文本文件)二進(jìn)制文件(非文本文件)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n下面對(duì)文件的打開(kāi)方式作幾點(diǎn)說(shuō)明:下面對(duì)文件的打開(kāi)方式作幾點(diǎn)說(shuō)明:(1)文件的打開(kāi)方式可以為上述的一個(gè)枚舉常量,也可)文件的打開(kāi)方式可以為上述的一個(gè)枚舉常量,也可以為多個(gè)枚舉常量構(gòu)成的按位或表達(dá)式。以為多個(gè)枚舉常量構(gòu)成的按位或表達(dá)式。(2)使用)使用open成員函數(shù)打開(kāi)一個(gè)文件時(shí),若由字符指針成員函數(shù)打開(kāi)一個(gè)文件時(shí),若由字符指針參數(shù)所指定的文件不存在,則建立該文件。參數(shù)所指定的文件不

33、存在,則建立該文件。(3)當(dāng)打開(kāi)方式中不含有)當(dāng)打開(kāi)方式中不含有ios:ate或或ios:app選項(xiàng)時(shí),則選項(xiàng)時(shí),則文件指針被自動(dòng)移到文件的開(kāi)始位置,即字節(jié)地址為文件指針被自動(dòng)移到文件的開(kāi)始位置,即字節(jié)地址為0的位置。的位置。(4)當(dāng)用輸入文件流對(duì)象調(diào)用)當(dāng)用輸入文件流對(duì)象調(diào)用open成員函數(shù)打開(kāi)一個(gè)文成員函數(shù)打開(kāi)一個(gè)文件時(shí),打開(kāi)方式參數(shù)可以省略,默認(rèn)按件時(shí),打開(kāi)方式參數(shù)可以省略,默認(rèn)按ios:in方式打方式打開(kāi),若打開(kāi)方式參數(shù)中不含有開(kāi),若打開(kāi)方式參數(shù)中不含有ios:in選項(xiàng)時(shí),則會(huì)自選項(xiàng)時(shí),則會(huì)自動(dòng)被加上。動(dòng)被加上。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n下面給出定義文件流對(duì)象和打開(kāi)

34、文件的一些例子:下面給出定義文件流對(duì)象和打開(kāi)文件的一些例子:(1)ofstream fout;fout.open(a:aaa.dat);/字符串中的雙反斜線表示一個(gè)字符串中的雙反斜線表示一個(gè)反斜線反斜線(2)ifstream fin;fin.open(a:bbb.dat,ios:in|ios:nocreate);(3)ofstream ofs;ofs.open(a:ccc.dat,ios:app);(4)fstream fio;fio.open(a:ddd.ran,ios:in|ios:out|ios:binary);返回本節(jié)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出文件的讀寫(xiě)文件的讀寫(xiě)n1

35、文件讀寫(xiě)方法文件讀寫(xiě)方法n(1)使用流運(yùn)算符直接讀寫(xiě)。)使用流運(yùn)算符直接讀寫(xiě)。n(2)使用流成員函數(shù)。)使用流成員函數(shù)。常用的輸出流成員函數(shù)如下:常用的輸出流成員函數(shù)如下:put函數(shù)函數(shù) write函數(shù)函數(shù) get函數(shù)函數(shù) read函數(shù)函數(shù) getline函數(shù)函數(shù) C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n下面對(duì)文件的打開(kāi)方式作幾點(diǎn)說(shuō)明:下面對(duì)文件的打開(kāi)方式作幾點(diǎn)說(shuō)明:n(1)向字符文件輸出數(shù)據(jù)有兩種方法,一種)向字符文件輸出數(shù)據(jù)有兩種方法,一種是調(diào)用從是調(diào)用從ostream流類(lèi)中繼承來(lái)的插入操作符流類(lèi)中繼承來(lái)的插入操作符重載函數(shù),另一種是調(diào)用從重載函數(shù),另一種是調(diào)用從ostream流類(lèi)中

36、繼流類(lèi)中繼承來(lái)的承來(lái)的put成員函數(shù)。成員函數(shù)。n(2)從打開(kāi)的字符文件中輸入數(shù)據(jù)到內(nèi)存變)從打開(kāi)的字符文件中輸入數(shù)據(jù)到內(nèi)存變量有三種方法。量有三種方法。n(3)當(dāng)使用流對(duì)象調(diào)用)當(dāng)使用流對(duì)象調(diào)用get()成員函數(shù)時(shí),通成員函數(shù)時(shí),通過(guò)判斷返回值是否等于文件結(jié)束符過(guò)判斷返回值是否等于文件結(jié)束符EOF可知文可知文件中的數(shù)據(jù)是否被輸入完畢。件中的數(shù)據(jù)是否被輸入完畢。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n2文本文件的讀寫(xiě)文本文件的讀寫(xiě)n文本文件只適用于那些解釋為文本文件只適用于那些解釋為ASCII碼的文件。碼的文件。處理文本文件時(shí)將自動(dòng)作一些字符轉(zhuǎn)換,如輸處理文本文件時(shí)將自動(dòng)作一些字符轉(zhuǎn)換,

37、如輸出換行字符出換行字符0 x0A時(shí)將轉(zhuǎn)換為回車(chē)時(shí)將轉(zhuǎn)換為回車(chē)0 x0D與換行與換行0 x0A兩個(gè)字符存入文本文件,讀入時(shí)也會(huì)將回兩個(gè)字符存入文本文件,讀入時(shí)也會(huì)將回車(chē)與換行兩個(gè)字符合并為一個(gè)換行字符,這樣車(chē)與換行兩個(gè)字符合并為一個(gè)換行字符,這樣內(nèi)存中的字符與寫(xiě)入文件中的字符之間就不再內(nèi)存中的字符與寫(xiě)入文件中的字符之間就不再是一一對(duì)應(yīng)關(guān)系。文本文件的結(jié)束以是一一對(duì)應(yīng)關(guān)系。文本文件的結(jié)束以ASCII碼碼的控制字符的控制字符0 x1A表示。表示。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n例例10-7:向向a盤(pán)上的盤(pán)上的write1.dat文件輸出文件輸出010之間的整數(shù),含之間的整數(shù),含0和和

38、10在內(nèi)。在內(nèi)。#include#include#includevoid main(void)ofstream f1(a:/write1.dat);/定義輸出文件流,并打開(kāi)相應(yīng)文件,若打開(kāi)定義輸出文件流,并打開(kāi)相應(yīng)文件,若打開(kāi) /失敗則失敗則f1帶回帶回0值值 if(!f1)/當(dāng)當(dāng)f1打開(kāi)失敗時(shí)進(jìn)行錯(cuò)誤處理打開(kāi)失敗時(shí)進(jìn)行錯(cuò)誤處理 cerra:/write1.dat open!endl;exit(1);for(int i=0;i10;i+)f1i;/向向f1文件流輸出文件流輸出i值值 f1.close();/關(guān)閉關(guān)閉f1所對(duì)應(yīng)的文件所對(duì)應(yīng)的文件C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n例例1

39、0-9:假定一個(gè)結(jié)構(gòu)數(shù)組假定一個(gè)結(jié)構(gòu)數(shù)組a中的元素類(lèi)型中的元素類(lèi)型pupil包含有表示姓名包含有表示姓名的字符指針域的字符指針域name和表示成績(jī)的整數(shù)域和表示成績(jī)的整數(shù)域grade,試編寫(xiě)一個(gè)函數(shù)試編寫(xiě)一個(gè)函數(shù)把該數(shù)組中的把該數(shù)組中的n個(gè)元素輸出到字符文件個(gè)元素輸出到字符文件“”中。中。#include#includevoid ArrayOut(pupil a,int n)ofstream f3(a:/write3.dat);if(!file3)/當(dāng)當(dāng)file3打開(kāi)失敗時(shí)進(jìn)行錯(cuò)誤處打開(kāi)失敗時(shí)進(jìn)行錯(cuò)誤處理理 cerr a:/write3.dat not open!endl;exit(1);C+

40、程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出 for(int i=0;in;i+)file3ai.nameendlai.gradeendl;();若已經(jīng)為輸出若已經(jīng)為輸出pupil類(lèi)型的數(shù)據(jù)定義了如下插入操作符重載函數(shù):類(lèi)型的數(shù)據(jù)定義了如下插入操作符重載函數(shù):ostream&operator(ostream&ostr,pupil&x)ostrx.nameendlx.gradeendl;return ostr;則可將上述函數(shù)中則可將上述函數(shù)中for循環(huán)體語(yǔ)句修改為循環(huán)體語(yǔ)句修改為“file3ai;”。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n例例10-10:從例從例10-7所建立的文件中輸入全部

41、數(shù)據(jù)并依次顯示到屏幕上。所建立的文件中輸入全部數(shù)據(jù)并依次顯示到屏幕上。#include#include#includevoid main(void)ifstream f1(a:/write1.dat,ios:in|ios:nocreate);/定義輸入文件流,并打開(kāi)相應(yīng)文件,若打開(kāi)失定義輸入文件流,并打開(kāi)相應(yīng)文件,若打開(kāi)失敗則敗則file1帶回帶回0值值 if(!file1)/當(dāng)當(dāng)file1打開(kāi)失敗時(shí)進(jìn)行錯(cuò)誤處理打開(kāi)失敗時(shí)進(jìn)行錯(cuò)誤處理 cerra:/write1.dat open!x)/依次從文件中輸入整數(shù)到依次從文件中輸入整數(shù)到x,當(dāng)讀到的當(dāng)讀到的是文件結(jié)束符時(shí)條件表達(dá)式是文件結(jié)束符時(shí)條件表

42、達(dá)式 /的值為的值為0 coutx;coutendl;();/關(guān)閉關(guān)閉file1所對(duì)應(yīng)的文件所對(duì)應(yīng)的文件該程序運(yùn)行結(jié)果如下:該程序運(yùn)行結(jié)果如下:0 1 2 3 4 5 6 7 8 9 C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n3二進(jìn)制文件的讀寫(xiě)二進(jìn)制文件的讀寫(xiě)n二進(jìn)制文件不同于文本文件,它可用于任何類(lèi)二進(jìn)制文件不同于文本文件,它可用于任何類(lèi)型的文件(包括文本文件),讀寫(xiě)二進(jìn)制文件型的文件(包括文本文件),讀寫(xiě)二進(jìn)制文件的字符不作任何轉(zhuǎn)換,讀寫(xiě)的字符與文件之間的字符不作任何轉(zhuǎn)換,讀寫(xiě)的字符與文件之間是完全一致的。是完全一致的。n一般地,對(duì)二進(jìn)制文件的讀寫(xiě)可采用兩種方法:一般地,對(duì)二進(jìn)制文件的

43、讀寫(xiě)可采用兩種方法:一種是使用一種是使用get()和和put();另一種是使用另一種是使用read()和和write()。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n例例10-12:二進(jìn)制文件讀寫(xiě)的示例程序。二進(jìn)制文件讀寫(xiě)的示例程序。#includestruct Date int month,day,year;void main()Date dt=02,07,1975;Ofstream ofile(“dsc.dat”,ios:binary);O(char*)&dt,sizeof dt);C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n4文件的隨機(jī)讀寫(xiě)文件的隨機(jī)讀寫(xiě)n(1)輸出流隨機(jī)訪問(wèn)函數(shù)。)

44、輸出流隨機(jī)訪問(wèn)函數(shù)。n(2)輸入流隨機(jī)訪問(wèn)函數(shù)。)輸入流隨機(jī)訪問(wèn)函數(shù)。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n例例10-13:編寫(xiě)一個(gè)程序,隨機(jī)讀寫(xiě)指定位置上的字符。編寫(xiě)一個(gè)程序,隨機(jī)讀寫(xiě)指定位置上的字符。#include#include int main()ifstream ifile;char fn20;coutfn;i(fn);if(!ifile)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出 coutfnCannot open this fileendl;return 0;i(0,ios:end);int maxpos=i();int pos;coutpos;if(posmaxpo

45、s)coutThe position of t rightendl;C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出 else char ch;i(pos);i(ch);coutchendl;i();return 1;如果需要讀取多個(gè)字節(jié)的數(shù)據(jù),則可將如果需要讀取多個(gè)字節(jié)的數(shù)據(jù),則可將i(ch);改為:改為:i(char*)&ch,sizeof(char);返回本節(jié)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出10.4 字符串流字符串流n字符串流概述字符串流概述nistrstream類(lèi)的構(gòu)造函數(shù)類(lèi)的構(gòu)造函數(shù)nostrstream類(lèi)的構(gòu)造函數(shù)類(lèi)的構(gòu)造函數(shù)返回首頁(yè)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入

46、輸出字符串流概述字符串流概述n字符串流類(lèi)包括輸入字符串流類(lèi)字符串流類(lèi)包括輸入字符串流類(lèi)istrstream,輸出字符串流類(lèi)輸出字符串流類(lèi)ostrstream和輸入輸出字符串和輸入輸出字符串流類(lèi)流類(lèi)strstream三種。它們都被定義在系統(tǒng)頭三種。它們都被定義在系統(tǒng)頭文件文件strstrea.h中。只要在程序中帶有該頭文中。只要在程序中帶有該頭文件,就可以使用任一種字符串流類(lèi)定義字符串件,就可以使用任一種字符串流類(lèi)定義字符串流對(duì)象。每個(gè)字符串流對(duì)象簡(jiǎn)稱為字符串流。流對(duì)象。每個(gè)字符串流對(duì)象簡(jiǎn)稱為字符串流。n字符串流對(duì)應(yīng)的訪問(wèn)空間是內(nèi)存中由用戶定義字符串流對(duì)應(yīng)的訪問(wèn)空間是內(nèi)存中由用戶定義的字符數(shù)組,

47、而文件流對(duì)應(yīng)的訪問(wèn)空間是外存的字符數(shù)組,而文件流對(duì)應(yīng)的訪問(wèn)空間是外存上由文件名確定的文件存儲(chǔ)空間。上由文件名確定的文件存儲(chǔ)空間。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出三種字符串流類(lèi)的構(gòu)造函數(shù)聲明格式分別如下:三種字符串流類(lèi)的構(gòu)造函數(shù)聲明格式分別如下:istrstream(const char*buffer);ostrstream(char*buffer,int n);strstream(char*buffer,int n,int mode);C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出下面給出定義相應(yīng)字符串流的例子。下面給出定義相應(yīng)字符串流的例子。(1)ostrstream sout(a

48、1,50);(2)istrstream sin(a2);(3)strstream sio(a3,sizeof(a3),ios:in|ios:out);返回本節(jié)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出istrstream類(lèi)的構(gòu)造函數(shù)類(lèi)的構(gòu)造函數(shù)istrstream類(lèi)的構(gòu)造函數(shù)的原型分別是:類(lèi)的構(gòu)造函數(shù)的原型分別是:istrstream:istrstream(char*s);istrstream:istrstream(char*s,int n);這兩個(gè)構(gòu)造函數(shù)的第一個(gè)參數(shù)這兩個(gè)構(gòu)造函數(shù)的第一個(gè)參數(shù)s是一個(gè)字符指針是一個(gè)字符指針或字符數(shù)組,使用該串來(lái)初始化要?jiǎng)?chuàng)建的流對(duì)或字符數(shù)組,使用該串來(lái)初始化

49、要?jiǎng)?chuàng)建的流對(duì)象。第一個(gè)構(gòu)造函數(shù)是使用所指定的串的全部象。第一個(gè)構(gòu)造函數(shù)是使用所指定的串的全部?jī)?nèi)容來(lái)構(gòu)造流對(duì)象,而第二個(gè)構(gòu)造函數(shù)使用串內(nèi)容來(lái)構(gòu)造流對(duì)象,而第二個(gè)構(gòu)造函數(shù)使用串中前中前n個(gè)字符來(lái)構(gòu)造串對(duì)象。個(gè)字符來(lái)構(gòu)造串對(duì)象。C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n下面舉例說(shuō)明上述構(gòu)造函數(shù)的用法。下面舉例說(shuō)明上述構(gòu)造函數(shù)的用法。例例10-14:從一個(gè)字符串流中輸入用逗號(hào)分開(kāi)的每一個(gè)整數(shù)并顯示出從一個(gè)字符串流中輸入用逗號(hào)分開(kāi)的每一個(gè)整數(shù)并顯示出來(lái)。來(lái)。#includevoid main()char a=12,34,56,78,90 ,87,65,43;coutawsxws;/從流中讀入一個(gè)整數(shù)

50、,從流中讀入一個(gè)整數(shù),并使用操作符并使用操作符ws讀取讀取 /一個(gè)整數(shù)前后的空白字符一個(gè)整數(shù)前后的空白字符 coutx;/輸出輸出x的值并后跟一個(gè)空的值并后跟一個(gè)空格格 sin.get(ch);/從從sin流中讀入一個(gè)字符,實(shí)際流中讀入一個(gè)字符,實(shí)際讀取的是讀取的是,或或字符字符 coutendl;此程序的運(yùn)行結(jié)果為:此程序的運(yùn)行結(jié)果為:12,34,56,78,90 ,87,65,4312 34 56 78 90 87 65 43C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n例例10-15:分析下列程序的運(yùn)行結(jié)果。分析下列程序的運(yùn)行結(jié)果。#include#include void main()

51、char buf=1234567;int i,j;istrstream s1(buf);s1i;istrstream s2(buf,3);s2j;couti+jendl;此程序的運(yùn)行結(jié)果為:此程序的運(yùn)行結(jié)果為:返回本節(jié)C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出ostrstream類(lèi)的構(gòu)造函數(shù)類(lèi)的構(gòu)造函數(shù)ostrstream類(lèi)的構(gòu)造函數(shù)的原型分別是:類(lèi)的構(gòu)造函數(shù)的原型分別是:ostrstream:ostrstream();ostrstream:ostrstream(char*s,int n,int mode=ios:out);ostrstream類(lèi)還提供了如下成員函數(shù):類(lèi)還提供了如下成員函數(shù):

52、int ostrstream:pcount();char*ostrstream:str();C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出n例例10-16:從一個(gè)字符串中得到每一個(gè)整數(shù),并把它們依次存入到一個(gè)字從一個(gè)字符串中得到每一個(gè)整數(shù),并把它們依次存入到一個(gè)字符串流中,最后向屏幕輸出這個(gè)字符串流。符串流中,最后向屏幕輸出這個(gè)字符串流。#includevoid main()char a50;char b50;istrstream sin(a);/定義一個(gè)輸入字符串流定義一個(gè)輸入字符串流sin,使用的字符數(shù)組為使用的字符數(shù)組為a ostrstream sout(b,sizeof(b);/定義一個(gè)

53、輸出字符串流定義一個(gè)輸出字符串流sout,使用的字符數(shù)組為使用的字符數(shù)組為b cin.getline(a,sizeof(a);/假定從鍵盤(pán)上輸入的字符串為假定從鍵盤(pán)上輸入的字符串為 ab12+34,56*78-90/cd123,ABC45DE:fg67;89 char ch=;C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出int x;while(ch!=)/使用使用字符作為字符串流結(jié)束標(biāo)志字符作為字符串流結(jié)束標(biāo)志 if(ch=48&chx;/從流中讀入一個(gè)整數(shù),當(dāng)碰到非數(shù)字字從流中讀入一個(gè)整數(shù),當(dāng)碰到非數(shù)字字符時(shí)符時(shí) /則就認(rèn)為一個(gè)整數(shù)結(jié)束。則就認(rèn)為一個(gè)整數(shù)結(jié)束。soutx;/將將x輸出到字符串流輸出到字符串流sout中中 sin.get(ch);/從從sin流中讀入下一個(gè)字符流中讀入下一個(gè)字符C+程序設(shè)計(jì)電子教案第10章流類(lèi)庫(kù)與輸入輸出 soutends;/向向sout流輸出作為流輸出作為結(jié)束符的結(jié)束符的字符和一個(gè)字符串結(jié)束符字符和一個(gè)字符串結(jié)束符0 coutb;/輸出字符串流輸出字符串流sout對(duì)應(yīng)的對(duì)應(yīng)的字符串字符串 coutendl;該程序的運(yùn)行結(jié)果如下:該程序的運(yùn)行結(jié)果如下:ab12+34,56*78-90/cd123,ABC45DE:fg67;8912 34 56 78 90 123 45 67 89 返回本節(jié)

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!