日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

C++流和文件流

發布時間:2025/4/16 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++流和文件流 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++流和文件流 收藏

?

在程序設計中,數據輸入/輸出(I/O)操作是必不可少的,C++語言的數據輸入/輸出操作是通過I/O流庫來實現的。C++中把數據之間的傳輸操作稱為流,流既可以表示數據從內存傳送到某個載體或設備中,即輸出流,也可以表示數據從某個載體或設備傳送到內存緩沖區變量中,即輸入流。在進行I/O操作時,首先是打開操作,使流和文件發生聯系,建立聯系后的文件才允許數據流入和流出,輸入或輸出結束后,使用關閉操作使文件與流斷開聯系。

標準輸入輸出流(coutcin)在使用過程中,只要在程序的開頭嵌入相應的頭文件“iostream.h”即可。

文件的打開和關閉是通過使用fstream類的成員函數openclose來實現的,fstream類用來對文件流進行操作,fstream類的頭文件是fstream.h

1.數據的輸出cout

cout是標準輸出設備即顯示器(默認設備)連接的預定義輸出流。C++語言的插入運算符“<<”向輸出流發送字符,cout是數據的目的地,插入運算符“<<”把數據傳送到cout

輸出流對象cout輸出數據的語句格式為:

cout<<數據1<<數據2<<……<<數據n

其中,“<<”是輸出操作符,用于向cout輸出流中插入數據。

cout中還可以使用流控制符控制數據的輸出格式,但要注意使用這些流控制符時,要在程序的開始部分嵌入頭文件“iomanip.h”。

常用的流控制符及其功能如下表所示:

1? I/O流的常用控制符

控制符 ??

Dec 十進制數輸出

Hex 十六進制輸出

Oct 八進制數輸出

setfill? 在給定的輸出域寬度內填充字符c

setprecison(n) 設顯示小數精度為n

setw(n) 設域寬為n個字符

setiosflags(ios::fixed) 固定的浮點顯示

setiosflags(ios::scientific) 指數顯示

setiosflags(ios::left) 左對齊

setiosflags(ios::right) 右對齊

setiosflags(ios::skipws) 忽略前導空白

setiosflags(ios::uppercase) 十六進制數大寫輸出

setiosflags(ios::lowercase) 十六進制數小寫輸出

setiosflags(ios::showbase)

? 當按十六進制輸出數據時,前面顯示前導符0x;當按八進制輸出數據時,前面顯示前導符0

Endl 輸入一個換行符并刷新流

?

2.數據的輸入cin

cin是與標準輸入設備即鍵盤(默認設備)連接的預定義輸入流。它從輸入流中取出數據,數據從輸入提起運算符“>>”處流進程序。

輸入流對象cin輸入數據的語句格式為:

cin>>變量名1>>變量名2>>……>>變量名n

其中,“>>”是輸入操作符,用于從cin輸入流中取得數據,并將取得的數據傳送給其后的變量,從而完成輸入數據的功能。

注意:“>>”操作符后除了變量名外不得有其他數字、字符串,否則系統會報錯。

3.文件流及其有關的類

文件是存儲在磁盤、磁帶等外部設備上的數據的集合,每一個文件都必須有一個唯一的文件名稱。在使用文件前必須首先打開文件,使用完畢后必須關閉文件。對文件的操作是由文件流類完成的。文件流類在流與文件之間建立連接。下圖是與文件操作相關的類及其繼承關系。

ios

istream

ostream

ifstream

iostream

ofstream

fstream

?

ios

istream

ostream

ifstream

iostream

ofstream

fstream

?

1 幾個與文件處理相關的類及其繼承關系結構圖

下表是常用的I/O流類庫的說明,以及在編程中需要包含到程序中的頭文件。

2 常用I/O流類庫說明

編程中需要包含的頭文件

ios 流基類,是抽象類 ostream.h

istream 通用輸入流類和其它輸入流類的基類 iostream.h

ifstream 輸入文件流類 fstream.h

ostream 通用輸出流類和其它輸出流類的基類 iosream.h.

ofstream 輸出文件流類 fstream.h

iostream 通用I/O流類和其它I/O流的基類 iostream.h

fstream I/O文件流類 fstream.h

?

4.文件的打開與關閉

對文件的操作是由文件流類完成的。文件流類在流與文件間建立連接。由于文件流分為三種:文件輸入流、文件輸出流、文件輸入/輸出流,所以相應的必須將文件流說明為ifstreamofstreamfstream類的對象,然后利用文件流的對象對文件進行操作。

對文件的操作過程可按照一下四步進行:即定義文件流類的對象、打開文件、堆文件進行讀寫操作、關閉文件,下面分別進行介紹。

1)定義文件流對象

利用文件流類可以定義文件流類對象,方法是:

文件流類 對象名;

如:

ifstream ifile; //定義一個文件輸入流對象

ofstream ofile; //定義一個文件輸出流對象

fstream iofile; //定義一個文件輸出/輸入流對象

2)打開文件

定義了文件流對象后,就可以利用其成員函數open()打開需要操作的文件,該成員函數的函數原型為:

void openconst unsigned char *filename,int mode,int access=filebuf:openprot);

其中:filename是一個字符型指針,指定了要打開的文件名;mode指定了文件的打開方式,其值如下表所示;access指定了文件的系統屬性,其取值為:

0???????? 一般文件

1???????? 只讀文件:

2???????? 隱藏文件

3???????? 系統文件

3 ios類中定義的文件打開方式

文件打開方式

ios::in 以輸入(讀)方式打開文件

ios::out 以輸出(寫)方式打開文件

ios::app 打開一個文件使新的內容始終添加在文件的末尾

ios::ate 打開一個文件使新的內容添加在文件尾,但下次添加時,寫在當前位置處

ios::trunc 若文件存在,則清除文件所有內容;若文件不存在,則創建新文件

ios::binary 以二進制方式打開文件,缺省時以文本方式打開文件

ios::nocreate 打開一個已有文件,若該文件不存在,則打開失敗

ios::noreplace 若打開的文件已經存在,則打開失敗

?

說明:

1)在實際使用過程中,可以根據需要將以上打開文件的方式用“|”組合起來。如:

ios::in|ios::out??????????????? 表示以讀/寫方式打開文件

ios::in|ios:: binary???????????? 表示以二進制讀方式打開文件

ios::out|ios:: binary??????????? 表示以二進制寫方式打開文件

ios::in|ios::out|ios::binary?????? 表示以二進制讀/寫方式打開文件

2)如果未指明以二進制方式打開文件,則默認是以文本方式打開文件。

3)對于ifstream流,mode參數的默認值為ios::in,對于ofstream流,mode的默認值為ios::out

3)文件的關閉

在文件操作結束(即讀、寫完畢)時應及時調用成員函數close()來關閉文件。該函數比較簡單,沒有參數和返回值。

利用對象和相應的成員函數對文件進行讀寫操作,我們將單獨介紹。

5.文件的讀寫操作

在打開文件后就可以對文件進行讀寫操作了。從一個文件中讀出數據,可以使用文件流類的getgetlineread成員函數以及運算符“>>”;而向一個文件寫入數據,可以使用其putwrite函數以及插入符“<<”,如下表所示:

4 文件流類的文件操作成員函數

函數原型

get(char &ch) 從文件中讀取一個字符

getline(char *pch,int count,char delim=/n) 從文件中讀取多個字符,讀取個數有參數count決定,參數delim 是讀取字符是指定的結束符(默認為換行字符)

read(char *pch,int count) 從文件中讀取多個字符,讀取個數由參數counnt決定

put(char ch) 向文件寫入一個字符

write(const char *pch,int count) 向文件寫入多個字符,字符個數由count決定

?

順序文件操作:這種操作方式只能從文件的開始處依次順序讀寫文件內容,而不能任意讀寫文件內容。

從一個文件中讀出數據,可以使用getgetlineread成員函數以及運算符“>>”;而向一個文件寫入數據,可以使用putwrite成員函數以及插入符“<<”。

總結

以上是生活随笔為你收集整理的C++流和文件流的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。