面向對象方法vc7io流_第1頁
面向對象方法vc7io流_第2頁
面向對象方法vc7io流_第3頁
面向對象方法vc7io流_第4頁
面向對象方法vc7io流_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1第7章I/O流2本章主要內容流的概念非格式化輸入/輸出格式化輸入/輸出文件的輸入/輸出3流的概念在C++中,將數(shù)據(jù)從一個對象到另一個對象的流動抽象為“流”。流動的方向不同,構成輸入/輸出流,即I/O流。在C++程序中,數(shù)據(jù)可以從鍵盤流入到程序,也可以從程序流向屏幕或磁盤文件。從流中獲取數(shù)據(jù)的操作稱為提取操作向流中添加數(shù)據(jù)的操作稱為插入操作。數(shù)據(jù)的輸入/輸出就是通過I/O流來實現(xiàn)的。4C++編譯系統(tǒng)提供的I/O流庫含有兩個平行基類:streambuf和ios,所有的流類都是由它們派生出來的。ios類有4個直接派生類,即輸入流類istream、輸出流類ostream、文件流類fstreambase、串流類strstreambase,這4種流作為流庫中的基本流類。5I/O流庫中各個類之間的層次關系iosistrstreamistreamifstreamistream_withassignostreamostream_withassignofstreamostrstreamstreambufstrstreambuffilebufstdiobuffstreambasestrstreambasestdiostreamfstreamstrstreamiostream6非格式化輸入/輸出非格式化輸入/輸出就是按系統(tǒng)預定義的格式進行的輸入/輸出。按默認約定,每個C++程序都能使用標準I/O流,如標準輸入、標準輸出。cin用來處理標準輸入,即鍵盤輸入;cout用來處理標準輸出,即屏幕輸出。它們被定義在iostream.h頭文件中。在使用cout和cin前,要用編譯預處理命令將所使用的頭文件包含到源程序中,其格式如下:#include<iostream.h>7非格式化輸出“<<”是預定義的插入運算符,作用在流類對象cout上,實現(xiàn)默認格式的屏幕輸出。使用cout輸出表達式值到屏幕上的格式如下:

cout<<E1<<E2<<…<<Em;其中,E1、E2、…、Em為均為表達式。功能是計算各表達式的值,并將結果輸出到屏幕當前光標位置處。cout是ostream流類的對象,它在iostream.h頭文件中作為全局對象定義:

ostreamcout(stdout);其中,stdout表示標準輸出設備名(屏幕)。8非格式化輸入“>>”是預定義的提取運算符,作用在流類對象cin上,實現(xiàn)默認格式的鍵盤輸入。使用cin將數(shù)據(jù)輸入到變量的格式如下:

cin>>V1>>V2>>…>>Vn;其中,V1、V2、…、Vn都是變量。功能是暫停執(zhí)行程序,等待用戶從鍵盤輸入數(shù)據(jù),各數(shù)據(jù)間用空格或Tab鍵分隔,輸入數(shù)據(jù)類型要與接受變量類型一致,輸完后,按回車鍵結束。cin是istream流類的對象,它在iostream.h頭文件中作為全局對象定義:

istreamcin(stdin);其中,stdin表示標準輸入設備名(鍵盤)。9格式化輸入/輸出C++提供了兩種進行輸入/輸出格式化的方法:一種是用ios類成員函數(shù)進行格式化。另一種是用專門的操作符函數(shù)進行格式化。10

用ios類成員函數(shù)格式化ios類成員函數(shù)主要是通過對狀態(tài)標志、輸出寬度、填充字符以及輸出精度的操作來完成輸入/輸出格式化。枚舉量定義在ios類中,因此引用時必須包含ios::前綴。使用時應該全部用符號名,絕不要用數(shù)值。11用ios成員函數(shù)對狀態(tài)標志進行操作ios類有3個成員函數(shù)可以對狀態(tài)標志進行操作,并且定義了一個long型數(shù)據(jù)成員記錄當前狀態(tài)標志。這些狀態(tài)標志可用位或運算符“|”進行組合。設置狀態(tài)標志用setf函數(shù)設置狀態(tài)標志,其一般格式如下:longios::setf(longflags)清除狀態(tài)標志用unsetf函數(shù)清除狀態(tài)標志,其一般格式如下:longios::unsetf(longflags)取狀態(tài)標志用函數(shù)flaps取狀態(tài)標志有兩種形式,其格式分別如下:longios::flags()longios::flags(longflag)

ios狀態(tài)標志如表7-2(P140)12用ios成員函數(shù)設置輸出寬度設置輸出寬度函數(shù)有兩種形式,其格式分別如下:

intios::width(intlen) intios::width()第一種形式是設置輸出寬度,并返回原來的輸出寬度;第二種形式是返回當前輸出寬度,輸出寬度為0。13設置填充字符填充字符的作用是當輸出值不滿輸出寬度時用填充字符來填充,默認填充字符為空格。它與width()函數(shù)配合使用,否則沒有意義。設置填充字符函數(shù)有兩種形式,其格式分別如下:

charios::fill(charch)charios::fill()第一種形式是重新設置填充字符,并返回設置前的填充字符;第二種形式是返回當前的填充字符。14設置輸出精度設置浮點數(shù)輸出精度有兩種形式,其格式分別如下:

intios::precision(intp)intios::precision()第一種形式是重新設置輸出精度,并返回設置前的輸出精度;第二種形式是返回當前的輸出精度。15用操作符函數(shù)格式化為了不直接以標志位的方式去處理流的狀態(tài),c++標準庫提供了標準的操作符函數(shù)專門操控這些狀態(tài)。這組函數(shù)不屬于任何類成員,定義在iomanip.h頭文件中。將它們用在提取運算符“>>”或插入運算符“<<”后面來設定輸入/輸出格式,即在讀寫對象之間插入一個修改狀態(tài)的操作。其中有些函數(shù)沒有參數(shù),所以又叫操作符。16設置輸入/輸出寬度函數(shù)setw(int)設置輸出填充字符函數(shù)setfill(int)設置輸出精度函數(shù)setprecision(int)設置輸入/輸出整型數(shù)數(shù)制函數(shù)dec、hex和oct取消輸入結束符函數(shù)ws控制換行操作符endl代表輸出單字符“\0”的操作符ends C++標準操作符如表7-3(P145)17

文件的輸入/輸出C++把文件看作是一個字符(字節(jié))的序列,即由一個個字符(字節(jié))順序組成。根據(jù)數(shù)據(jù)的組織形式,可分為ASCII碼文件和二進制文件。ASCII碼文件又稱為文本文件 ,它的每一個字節(jié)存放一個ASCII碼,代表一個字符。二進制文件是把內存中的數(shù)據(jù)按其在內存中的存儲形式原樣輸出到磁盤文件存放。18C++有三種文件流類:輸入/輸出文件流類fstream輸入文件流類ifstream輸出文件流類ofstream它們分別從I/O流中的iostream、istream、ostream流類中派生而來。這些文件流類都定義在fstream.h頭文件中,因此,要使用文件流類,必須在程序開始包含該頭文件。19C++中進行文件操作的一般步驟

為文件定義一個流類對象;使用open()函數(shù)建立(或打開)文件。如果文件不存在,則建立該文件;如果磁盤上已存在該文件,則打開該文件;進行讀寫操作。在建立(或打開)的文件上執(zhí)行所要求的輸入/輸出操作。一般來說,在內存與外設的數(shù)據(jù)傳輸中,由內存到外設稱為輸出或寫,反之則稱為輸入或讀;使用close()函數(shù)關閉文件。當完成操作后,應把打開的文件關閉,避免誤操作。20在C++中,打開一個文件就是將這個文件與一個流建立關聯(lián);關閉一個文件就是取消這種關聯(lián)。open()函數(shù)的原型在fstream.h中定義。另外,在fstream、ifstream和ofstream流類中均有定義。其原型為:voidopen(char*filename,intmod,intaccess);其中第

溫馨提示

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

最新文檔

評論

0/150

提交評論