C++ 語言電子檔_第1頁
C++ 語言電子檔_第2頁
C++ 語言電子檔_第3頁
C++ 語言電子檔_第4頁
C++ 語言電子檔_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第10章 C+語言的輸入/輸出操作10.1I/O流類庫概述10.2標準文件的輸入/輸出操作10.3格式輸出操作10.4磁盤文件的操作110.1 I/O流類庫概述10.1.1 輸入/輸出流 數(shù)據(jù)流按其流向可分為輸入流和輸出流兩種。輸入流指的是字節(jié)流從輸入設備流向內存。輸出流指的是字節(jié)流從內存流向輸出設備。2 輸入流和輸出流都是帶有內存緩沖區(qū)的。 在C+語言中,將輸入流和輸出流都分別定義為類,這些類放在C+語言的I/O流類庫中,使用它們定義的對象稱為流對象。31通用I/O流類庫 使用這些功能時應包含頭文件iostream.h。2文件I/O流類庫 使用有關文件讀寫操作時,應包含fstream.h文件

2、。10.1.2 I/O流類庫的主要功能410.2 標準文件的輸入/輸出操作1使用預定義的插入符 這是一種最簡單的,也是最常用的方式。 格式如下: cout 見書中例10.1,例10.2。 10.2.1 屏幕輸出操作5 格式如下: ostream & .put (char c); 見書中例10.3,2使用成員函數(shù)put()輸出一個字符6 格式如下: cout.write (const char *str, int n) 見書中例10.43使用成員函數(shù)write()輸出一個字符串 71使用預定義的提取符10.2.2 鍵盤輸入操作 格式如下: cin 從鍵盤上輸入數(shù)據(jù)是帶緩沖區(qū)的,輸入完數(shù)據(jù)按回車鍵

3、時才形成輸入流。 輸入流中數(shù)據(jù)項的默認分隔符為空白符。 見書中例10.5,例10.6。8 格式如下: char istream:get() 見書中例10.7。 2使用成員函數(shù)get()獲取一個字符 9 格式如下: cin.getline(char *buf,int n,char deline=n) 見書中例10.8。3使用成員函數(shù)getline()讀取一行字符10格式如下: cin.read (char *buf,int n)見書中例10.9。4使用成員函數(shù)read()讀取若干字符1110.3 格式輸出操作10.3.1 使用流對象的成員函數(shù)進行格式輸出1控制輸入/輸出格式的標志位 用來控制輸入

4、/輸出格式的標志位如表10.1所示。 12表10.1ios標志位 標 志 位值含 義輸入/輸出skipws0 x0001跳過輸入中的空白符Ileft0 x0002輸出數(shù)據(jù)按輸出域左對齊Oright0 x0004輸出數(shù)據(jù)按輸出域右對齊Ointernal0 x0008數(shù)據(jù)的符號左對齊,數(shù)據(jù)本身右對齊,符號和數(shù)據(jù)之間為填充符Odec0 x0010轉換基數(shù)為十進制形式Ooct0 x0020轉換基數(shù)為八進制形式I/Ohex0 x0040轉換基數(shù)為十六進制形式I/Oshowbase0 x0080輸出的數(shù)值數(shù)據(jù)前面帶有基數(shù)符號(0或0 x)I/Oshowpoint0 x0100浮點數(shù)輸出帶有小數(shù)點Ouppe

5、rcase0 x0200用大寫字母輸出十六進制數(shù)值Oshowpos0 x0400正數(shù)前面帶有“+”符號Oscientific0 x0800浮點數(shù)輸出采用科學表示法Ofixed0 x1000使用定點數(shù)形式表示浮點數(shù)Ounitbuf0 x2000完成輸入操作后立即刷新流的緩沖區(qū)Ostdio0 x4000完成輸入操作后刷新系統(tǒng)的stdout.stderrO13 下面介紹一些用來控制輸出格式的成員函數(shù)。(1)設置標志字的成員函數(shù)long flags() 該函數(shù)返回當前標志字。long flag(long) 該函數(shù)使用參數(shù)更新標志字,并返回更新前的標志字。long setf(long setbits,

6、long field)2控制輸出格式的成員函數(shù)14 該函數(shù)用來將field參數(shù)所指定的標志位清零,將setbits為1的標志位置1,并返回設置前的標志字。long setf(long) 該函數(shù)用來設置參數(shù)的指定的那些標志位,并返回更新前的標志字。long unsetf(long) 該函數(shù)用來清除參數(shù)所指定的那些標志位,并返回更新前的標志字。 15(2)設置輸出數(shù)據(jù)所占寬度的成員函數(shù)int width() 該函數(shù)用來返回當前輸出的數(shù)據(jù)寬度。int width(int) 該函數(shù)用來用其參數(shù)設置當前輸出的數(shù)據(jù)寬度,并返回更新前的寬度值。 16(3)設置填充符的成員函數(shù)char fill()該函數(shù)用來

7、返回當前所用的填充符。char fill(char) 該函數(shù)用來設置當前的填充符為參數(shù)給定的字符,并返回更新前的填充符。 17(4)設置浮點數(shù)輸出精度的成員函數(shù)int precision()該函數(shù)用來返回當前浮點數(shù)的有效數(shù)字的個數(shù)。浮點數(shù)的精度是用有效數(shù)字個數(shù)來表示的,其個數(shù)越大,表示精度越高。int precision(int)該函數(shù)用來設置當前浮點數(shù)輸出時有效數(shù)字個數(shù)為該函數(shù)所指定的參數(shù)值,并返回更新前的值。18 下面給出在默認情況下的某些參數(shù)的值: 數(shù)據(jù)輸出寬度默認情況下為實際寬度; 默認情況下填空符為空格符; 單精度浮點數(shù)最多提供7位有效數(shù)字,雙精度浮點數(shù)最多提供15位有效數(shù)字,長雙精

8、度浮點數(shù)最多提供19位有效數(shù)字。見書中例10.10,例10.11。 19 表10.2中給出了I/O流類庫中定義的控制符。使用這些控制符時需包含iomarip.h頭文件。10.3.2 使用控制符進行格式輸出20表10.2流類庫所定義的操作子 操作子名含 義輸入/輸出dec數(shù)值數(shù)據(jù)采用十進制表示I/Ohex數(shù)值數(shù)據(jù)采用十六進制表示I/Ooct數(shù)值數(shù)據(jù)采用八進制表示I/Osetbase(int n)設置數(shù)制轉換基數(shù)為n(n為0,8,10,16)0表示使用默認基數(shù)I/Ows提取空白符Iends插入空字符Oflush刷新與流相關聯(lián)的緩沖區(qū)Oresetiosflags(long)清除參數(shù)所指定的標志位I/

9、Osetiosflags(long)設置參數(shù)所指定的標志位I/Osetfill(int)設置填充字符Osetprecision(int)設置浮點數(shù)輸出的有效數(shù)字個數(shù)Osetw(int)設置輸出數(shù)據(jù)項的域寬O見書中例10.12。2110.4 磁盤文件的操作10.4.1 打開文件和關閉文件操作1打開文件操作 打開文件通常分為兩步:先創(chuàng)建流對象,再使用成員函數(shù)open()打開指定的文件。 創(chuàng)建流對象又可分兩種情況,一種情況是創(chuàng)建fstream類的對象,另一種情況是創(chuàng)建ifstream類或ofstream類的對象。 22 (1)通過創(chuàng)建fstream類對象打開文件的方法 方法一:先創(chuàng)建對象,再打開文件

10、 格式如下: fstream ; .open(,);23表10.3文件訪問方式常量 方 式 名用 途in以輸入(讀)方式打開文件out以輸出(寫)方式打開文件app以輸出追加方式打開ate文件打開時,文件指針位于文件尾trunc如果文件存在,將其長度截斷為0,并清除原有內容;如果文件不存在,則創(chuàng)建新文件binary以二進制方式打開文件,默認時為文本方式nocreate打開一個已有文件,如該文件不存在,則打開失敗noreplace如果文件存在,除非設置ios:ate或ios:app,否則打開操作失敗ios:inlios:out以讀和寫的方式打開文件ios:outlios:binary以二進制寫方

11、式打開文件ios:inlios:binary以二進制讀方式打開文件24 方法二:創(chuàng)建對象和打開文件合二為一 其格式如下: fstream (, ); 與前面方法相比較,省略了打開函數(shù)的名字open。 25 (2)通過創(chuàng)建istream類對象或ostream類對象打開文件的方法 方法一:先創(chuàng)建對象,再打開文件 格式如下: ofstream ; .open (); 或者 ifstream; .open();26方法二:創(chuàng)建對象同時打開文件格式如下: ofstream ();或者 ifstream ();27格式如下: .close();2關閉文件2810.4.2 文件的輸入/輸出操作1文本文件的讀

12、寫操作 在文本文件的讀寫操作之前,要先打開文件,打開文件時應先創(chuàng)建流對象,打開文件時應指出文件名和訪問方式,文件打開后才可以進行讀寫操作,操作完畢后還要關閉文件。 見書中例10.13,例10.14,例10.15。 29 二進制文件的讀寫操作與文本文件的讀寫操作基本相同,所不同的僅在于對二進制文件來說打開時需要加上ios:binary方式。另外,用于二進制文件讀寫函數(shù)通常使用read()函數(shù)和write()函數(shù)。 見書中例10.16。2二進制文件的讀寫操作3010.4.3 隨機文件操作 C+語言中所提供的定位讀、寫指針的函數(shù)。 在類istream中定義的定位讀指針的成員函數(shù)有如下幾種: istream & istream:seekg (); istream & istream:seekg(, ); long int & istream:tellg();31 在類ostream中

溫馨提示

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

評論

0/150

提交評論