




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、11.1 輸入流和輸出流輸入流和輸出流C無專門的輸入輸出語句,是由流庫完成;流與特定的設備相聯系。iostream.h流類的繼承體系流類的繼承體系iosostreamistreamclogfstreamiostreamcerrcinofstreamifstreamcoutl流:用于輸入輸出地一組類l主要內容:文本流、二進制流11.1.1 輸出流輸出流 cout : 輸出流ostream類的一個預定義對象 與標準輸出設備(終端屏幕)相聯系 ostream中重載了運算符(插入運算符)插入運算符: ostream& operator(類型); /重載形式:注意優先級和結合順序程序程序輸入設備
2、輸入設備輸出設備輸出設備文件文件 cout“string”; cout.operatori; cin.operator(i); 析取運算符:跳過開始空白字符。 char ch; cinch; /輸入“ x”,讀入x 注意:注意:C C編譯器將根據對象編譯器將根據對象類型選用相應版本的重載類型選用相應版本的重載)運算符函數,用戶不必關心運算符函數,用戶不必關心。 讀入一個字符串時,空格作為串的終止。 char buffer20; cinbuffer; /輸入“Jack Spart”,讀入“Jack”類型不符,返回零值,并終止程序。類型不符,返回零值,并終止程序。 int readints( )
3、int v10; for(int i=0; ivi) continue; return i; / 輸入:輸入:1 2 3 4 5. 6 7 811.1.3 istream_withassign 的對象的對象標準輸入設備標準輸入設備 ostream_withassign 的對象的對象標準輸出設備標準輸出設備 ostream_withassign 的對象的對象標準錯誤輸出設備標準錯誤輸出設備 ostream_withassign 的對象的對象標準錯誤輸出設備標準錯誤輸出設備輸入流輸入流輸出流輸出流文件流文件流串流串流輸入流輸入流輸出流輸出流文件流文件流串流串流輸入輸入/輸出流輸出流輸入輸入/輸出文
4、件流輸出文件流輸入輸入/輸出串流輸出串流屏幕輸出流屏幕輸出流輸入文件流輸入文件流輸入串流輸入串流輸出串流輸出串流輸出文件流輸出文件流輸入流輸入流輸出流輸出流文件流文件流串流串流輸入輸入/輸出流輸出流輸入輸入/輸出文件流輸出文件流輸入輸入/輸出串流輸出串流屏幕輸出流屏幕輸出流輸入文件流輸入文件流輸入串流輸入串流輸出串流輸出串流輸出文件流輸出文件流重載賦值運算符重載賦值運算符“=”得到三個派生類得到三個派生類11.1.4 重載插入和析取運算符(對用戶定義類型)重載插入和析取運算符(對用戶定義類型) class Complex double rpart, ipart; public: friend
5、ostream&operator(ostream &s, Complex &c); / ;第一個參數是流第一個參數是流第二個參數是要第二個參數是要輸入輸出的對象輸入輸出的對象返回流的引用返回流的引用例例1/ 使用使用 的初始版本的初始版本/ 使用使用 的初始版本的初始版本/ 使用使用 的初始版本的初始版本/ 使用使用 的重載版本的重載版本21/ 使用使用 的初始版本的初始版本/ 使用使用 的初始版本的初始版本/ 使用使用 的初始版本的初始版本/ 使用使用 的重載版本的重載版本輸出輸出 :1 , 2 , 34 , 5 , 67 , 8 , 922class three_d
6、 int x , y , z ; public : three_d ( int a , int b, int c ) x = a ; y = b ; z = c ; friend operator ( , three_d obj ) s obj . x “ , ” ; / 使用使用 的初始版本的初始版本 s obj . y “ , ” ; / 使用使用 的初始版本的初始版本 s obj . z “n” ; / 使用使用 的初始版本的初始版本 ; ;main ( ) three_d a ( 1 , 2 , 3 ) , b ( 4 , 5 , 6 ) , c ( 7 , 8 , 9 ) ; cou
7、t a b c ; / 使用使用 的重載版本的重載版本23class three_d int x , y , z ; public : three_d ( int a , int b, int c ) x = a ; y = b ; z = c ; friend operator ( , three_d obj ) s obj . x “ , ” ; / 使用使用 的初始版本的初始版本 s obj . y “ , ” ; / 使用使用 的初始版本的初始版本 s obj . z “n” ; / 使用使用 的初始版本的初始版本 ; ;main ( ) three_d a ( 1 , 2 , 3 )
8、 , b( 4 , 5 , 6 ) , c ( 7 , 8 , 9 ) ; / 使用使用 的重載版本的重載版本24例例2 #include class Complex double rpart, ipart; public: Complex(double r=0.0, double i=0.0) ipart=i; part=r; friend ostream&operator(ostream &, Complex &); friend ostream&operator(istream& s, Complex &c) s(c.rpart,c.ipa
9、rt); return s; ostream& operator(ostream& s, Complex &c) s(c.rpart,c.ipartc; cout“Complex:”cbuffer;輸出流: cout.width(4); cout(12) ; cout.width(4); cout.fill(#); cout(12) ;( 12)( 12)( #12)( #12)Width( )作用于輸入作用于輸入/ /輸出的數字或串輸出的數字或串 數據的長度超過width,忽略設置,按數據實際長度顯示; cout.width(4); cout(121212) ;每次插
10、入操作后,width被置0; cout.width(4); cout.fill(#); cout(12“),(“ 12) ;(121212)(121212)( #12) , (12)( #12) , (12)11.2.2 11.2.2 格式狀態格式狀態Ios中用枚舉記錄標志,控制I/O class ios public: enum skipws=01, /析取操作忽略空白字符析取操作忽略空白字符 left=02, right=04, internal=010, /值按右對齊,符號按左對齊值按右對齊,符號按左對齊 dec=020, oct=040, hex=0100, showbase=0200
11、, showpoint=0400, /float,double顯示小數和尾數后的零顯示小數和尾數后的零 uppercase=01000, showpos=02000, /在正整數前插入在正整數前插入“+”號號 scientific=04000, /科學計數法,小數點前一位數字科學計數法,小數點前一位數字 / ; / ;可用下列函數設置、讀取、取消標志位; long flags( ) /返回當前格式化標志值返回當前格式化標志值 long flags(long f) /設置標志設置標志值值f,并返回上次標志值并返回上次標志值 long setf(long f) /設置標志設置標志位位f,并返回上次
12、標志位并返回上次標志位 long unsetf(long f) /取消在取消在f中設置的標志位,并返回上次標志位中設置的標志位,并返回上次標志位舉例: void your_function( ) long old_options=cout.flags(ios:left | ios:oct | ios:showpoint); / cout.flags(old_options); 相抵觸的標志不能同時設置,如:ios:dec和ios:oct帶偽參數的setf( )指明設置哪類選項,自動清除與新設置矛盾的舊選項。 cout1234 ; cout.setf(ios:oct, ios:basefield
13、); cout1234 ; cout1234 ; cout.setf(ios:hex, ios:basefield); cout1234 ; 原選項基礎原選項基礎上增加上增加showbase偽參數:基數設置位偽參數:基數設置位作用范圍:作用范圍:下一標志位設置下一標志位設置 cout.flags(cout.flags( ) | ios:showbase); cout.setf(ios:showbase); 結果結果: 1234 2322 2322 4d2 11.3 控制符控制符函數控制不方便int x=1, y=2cout.width(5);coutx;cout.width(4);couty;
14、寬度控制符寬度控制符 int x=1, y=2;coutsetw(5)xsetw(4)y;控制符如控制符如endl預定義控制符有: hex dec oct指定基數,缺省dec ws用于輸入流,略去空白 endl換行 ends插入一個NULL(0)字符,結束一個字符串 flush強制將流從緩沖區寫入相應設備 setfill(char f)設置填充字符,缺省委空格 setprecision(int p)設浮點數精度,缺省為6 .控制符成員函數描述decflags(10)置基數為10hexflags(16)置基數為16octflags(8)置基數為8setfill(c)flags(c)設填充字符為c
15、setprecision(n)percision(n)設顯示小數精度為n位setw(n)width(n)設域寬為n個字符11.5 文件和流文件和流處理文件的類在fstream.h中定義。文件輸入輸出:1、創建流對象 2、使用流的成員函數打開文件文件與流建立起聯系文件與流建立起聯系輸出流對象輸出流對象my_file與與文件文件hello.dat相聯系相聯系 #include #lnclude void main( ) ofstream my_file; my_file.open(“hello.dat”, ios:out); / 11.5.1 打開文件打開文件輸入打開文件用ifstream類;輸出
16、打開文件用ofstream類;輸入 輸出打開文件用fstream類。打開文件: void open(char* name, int mode, int file_attrb);mode為下列一些方式: ios:app附加方式寫到流 ios:ate打開文件,并把文件指針移到文件尾 ios:in為讀打開 ios:out為寫打開 ios:trunc如文件存在,舍去文件內容 ios:nocreate文件不存在,則失敗 ios:noreplace文件存在,則失敗file_attrb文件屬性: 普通文件、只讀文件、隱藏文件。 #include #lnclude void main( ) ofstream
17、my_file; my_file.open(“hello.dat”); my_file“Hello world”endl; my_file.close( ); ofstream my_file(“hello.dat”);11.5.2 按正文方式讀文件按正文方式讀文件 #lnclude void main( ) char string120, string220; ifstream my_file(“hello.dat”); my_filestring1; my_filestring2; coutstring1 string2endl; my_file.close( ); 11.5.3 按二進制
18、方式讀按二進制方式讀/ /寫文件寫文件 讀寫的數據無含義,不用,而是get( )和put( ) istream & get(char &c); ostream& put(char &c);寫數據: #lnclude void main( ) char my_char; static char string =“Hello world”; int i=0; ofstream my_out_file(“hello.dat”); while(stringi) my_out_file.put (stringi+ ); my_out_file.close( ); 讀數據:
19、 #lnclude void main( ) char my_char; int i=0; ifstream my_in_file(“hello.dat”); while(my_in_file) my_in_file.get(my_char ); coutmy_char; my_in_file.close( ); 11.5.4 使用使用read( ) 和和write( )函數函數一次讀寫多個字符,其原型: istream & read(unsigned char* char_buffer, int number_bytes); ostream& write(const unsi
20、gned char* char_buffer , int number_bytes); #lnclude #include void main( ) static char hello_buf =“hellow world.n”; ofstream my_out_file(“hello.dat”); my_out_file.write(hello_buf, sizeof(hello_buff); ifstream my_in_file(“hello.dat”); my_in_file.read(hello_buf, sizeof(hello_buf); my_in_file.close( ); my_out_file.close( ); 11.5.5 使用文件指針使用文件指針 讀指針讀指針 寫指針寫指針用istr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- CQJTG/T E03-2021公路橋梁預應力施工質量驗收規范
- 金屬制品在環保監測設備中的實時監測能力考核試卷
- 校長在2025屆高考百日誓師大會上的講話橫絕學海問鼎蒼穹
- 2025年中國邊緣智能計算芯片行業市場現狀及未來發展前景預測分析報告
- 房產拍賣代理與中介服務合同
- 抖音平臺合規性承諾及信息互發合同
- 2025年中國被動電子元器件行業市場規模調研及投資前景研究分析報告
- 網店過戶交易保障及后續市場拓展與客戶服務合同
- 電商廣告媒體資源采購與銷售轉化服務協議
- 生態農業股權投資協議(SPA)及綠色生產標準協議
- GB/T 43449-2023法庭科學毒物分析實驗室質量控制規范
- 舟山外釣島光匯油庫儲運基地四期工程
- [甘肅]最新甘肅省造價文件匯編(310頁)
- 工業企業環境管理工作要點
- 臨床技術操作規范麻醉學分冊
- 高中物理實驗考點整合電學PPT課件
- 《愛蓮說》學案
- PA66增強增韌研究
- 全國大學生數學建模競賽優秀論文選之易拉罐形狀和尺寸的最優設計
- API-682密封系統-中英文對照版
- 新生兒沐浴及撫觸ppt課件
評論
0/150
提交評論