課件7io流與文件系統(tǒng)_第1頁
課件7io流與文件系統(tǒng)_第2頁
課件7io流與文件系統(tǒng)_第3頁
課件7io流與文件系統(tǒng)_第4頁
課件7io流與文件系統(tǒng)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、IO流與文件系統(tǒng)王瑞上海大學(xué)通信與信息工程學(xué)院I/O系統(tǒng)的作用2022/7/182應(yīng)用程序I/O系統(tǒng)磁盤鍵盤顯示器文件文件I/O系統(tǒng)為程序與I/O設(shè)備之間進(jìn)行數(shù)據(jù)交互提供了途徑。C+為何有自己的I/O系統(tǒng)C語言的標(biāo)準(zhǔn)輸入輸出函數(shù)和只能處理基本數(shù)據(jù)類型,對用戶自定義類型無能為力。C+可以重載輸入輸出運(yùn)算符,能夠處理用戶自定義類型。C+采用繼承方式來設(shè)計流庫,功能更強(qiáng)大,擴(kuò)充性更好。2022/7/183C+流庫的結(jié)構(gòu)C+流庫是從繼承方法建立起來的一個輸入/輸出類庫,它具有兩個平行的基類,即streambuf類和ios類,所有其他的流類都是從它們直接或間接地派生出來的。streambuf類提供對緩沖

2、區(qū)的低級操作:2022/7/184streambuffilebufstrstreambufconbufios類及其派生類提供用戶使用流類的接口:2022/7/185iosistreamostreamfstreambasestrstreambaseifstream istrstreamofstream ostrstream constreamfstreamstrstreamiostreamistream-withassignostream-withassigniostream-withassign有關(guān)頭文件和預(yù)定義流對象包含常用流類聲明的頭文件:iostream.h支持標(biāo)準(zhǔn)I/0操作fstrea

3、m.h 支持文件I/0操作strstream.h 支持串I/0操作iomanip.h支持大多數(shù)流操縱符當(dāng)開始執(zhí)行C+程序時,有幾個自動打開的預(yù)定義流:cin標(biāo)準(zhǔn)輸入cout標(biāo)準(zhǔn)輸出cerr不帶緩沖標(biāo)準(zhǔn)出錯信息輸出clog帶緩沖標(biāo)準(zhǔn)出錯信息輸出2022/7/186輸入和輸出istream和ostream是用戶使用流庫的主要界面之一。istream提供了主要的輸入操作,可以通過istream完成如下操作:從輸入流中獲取單個字符。從輸入流中獲取一行數(shù)據(jù)。從輸入流中獲取指定字節(jié)數(shù)的數(shù)據(jù)。將文件指針移動到指定位置,等等。2022/7/187ostream提供了主要的輸出操作,可以通過ostream完成如

4、下操作:刷新輸出流。向輸出流中寫入指定字節(jié)數(shù)的數(shù)據(jù)。將文件指針移動到指定位置,等等。istream和ostream分別重載了和兩個運(yùn)算符,用戶可以很方便地使用這兩個運(yùn)算符對預(yù)定義類型進(jìn)行輸入和輸出。用戶也可以重載這兩個運(yùn)算符,從而能夠輸入和輸出自定義類的對象。2022/7/188格式控制C+提供了兩種格式控制的方法:使用操作符使用ios類中實(shí)現(xiàn)格式控制的成員函數(shù)2022/7/189使用操作函數(shù)控制格式C+ I/O流庫提供了一些操作符(如下表所示),可以直接嵌入到輸入/輸出語句中來實(shí)現(xiàn)特殊格式的控制。2022/7/18102022/7/1811操縱符 含義 I/Odec 以十進(jìn)制為基 I/Ooc

5、t 以八進(jìn)制為基 I/Ohex 以十六進(jìn)制為基 I/Ows 提取輸入中的空白 inputendl 插入換行并刷新流 outputends 在串后插入終止符 outputflush 刷新流 outputsetbase(int) 設(shè)置基(0,8,10,16) outputresetiosflags(long ) 清除參數(shù)指定的格式位 I/Osetiosflags(long ) 設(shè)置參數(shù)指定的格式位 I/Osetfill(int ) 設(shè)置填充字符 I/Osetprecision(int) 設(shè)置顯示精度 I/Osetw(int) 設(shè)置顯示域?qū)?I/O例子void main() int a=100; c

6、outhexaendl; coutoctaendl; coutdecaendl;/結(jié)果:641441002022/7/1812使用ios類成員函數(shù)格式化輸入輸出的格式由各種格式狀態(tài)標(biāo)志來確定。這些狀態(tài)標(biāo)志在狀態(tài)量中各占一位,它們在ios類中定義為枚舉量,如下表所示。這些成員函數(shù)的功能包括:設(shè)置格式狀態(tài)標(biāo)志(setf)清除格式狀態(tài)標(biāo)志(unsetf)獲取格式狀態(tài)標(biāo)志(flag)設(shè)置域?qū)?、填充字符和設(shè)置精度(width、fill、precision等)2022/7/18132022/7/1814狀態(tài)標(biāo)志 含義 I/Oskipws 跳過輸入中的空白 inputleft 左對齊輸出 outputrig

7、ht 右對齊輸出 outputinternal 在引導(dǎo)符或基指示符后填入字符 outputdec 以十進(jìn)制為基 I/Ooct 以八進(jìn)制為基 I/Ohex 以十六進(jìn)制為基 I/Oshowbase 在輸出中顯示基指示符 outputshowpoint 在輸出中顯示小數(shù)點(diǎn) outputuppercase 十六進(jìn)制輸出時,字母大寫 outputshowpos 正整數(shù)前顯示“+” outputscientific 科學(xué)計數(shù)法顯示浮點(diǎn)數(shù) outputfixed 定點(diǎn)形式顯示浮點(diǎn)數(shù) outputunitbuf 在輸出后立即刷新所有流 outputstdio 輸出后刷新stdout和stderr output

8、例子void main()int a=20;double b=111.11; cout.setf(ios:showpos|ios:scientific);coutaendl;coutbendl;/結(jié)果:+20+1.111100e+0022022/7/1815文件I/OC+把文件看作是字符序列。根據(jù)數(shù)據(jù)的組織形式,文件可分成ASCII文件和二進(jìn)制文件兩種。ASCII文件又稱為文本文件,它的每一個字節(jié)放一個ASCII代碼,代表一個字符,這樣便于對字符進(jìn)行處理,也便于輸出,但占用存儲空間較多。二進(jìn)制文件是把內(nèi)存的數(shù)據(jù),按其在內(nèi)存中的存儲形式原樣寫到磁盤上。用二進(jìn)制形式輸出數(shù)據(jù),可節(jié)省外存空間和轉(zhuǎn)換時

9、間,但一個字節(jié)并不對應(yīng)一個字符。一般,中間結(jié)果常用二進(jìn)制文件保存,以減少外存開銷。2022/7/1816C+中進(jìn)行文件I/O的基本過程在C+中,要進(jìn)行文件的I/O,必須首先創(chuàng)建一個流,然后將這個流與文件相關(guān)聯(lián),即打開文件,此時才能進(jìn)行讀/寫操作,完成后再關(guān)閉這個文件。2022/7/1817文件的打開和關(guān)閉C+有三種類型的文件流:輸入文件ifstream,輸出文件流ofstream,輸入/輸出文件流fstream。這些文件流都定義在fstream.h中。要執(zhí)行文件輸入/輸出,須做三件事:在程序中要包含頭文件fstream.h建立流。建立流的過程就是定義流類的對象。使用open()函數(shù)打開文件,也就是使某一文件與上面的某一流相聯(lián)系。2022/7/1818舉例#include #include void main() char buf32; ifstream in;memset(buf,0,siz

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論