日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

C++流和文件流

發(fā)布時(shí)間:2025/4/16 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++流和文件流 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C++流和文件流 收藏

?

在程序設(shè)計(jì)中,數(shù)據(jù)輸入/輸出(I/O)操作是必不可少的,C++語(yǔ)言的數(shù)據(jù)輸入/輸出操作是通過(guò)I/O流庫(kù)來(lái)實(shí)現(xiàn)的。C++中把數(shù)據(jù)之間的傳輸操作稱(chēng)為流,流既可以表示數(shù)據(jù)從內(nèi)存?zhèn)魉偷侥硞€(gè)載體或設(shè)備中,即輸出流,也可以表示數(shù)據(jù)從某個(gè)載體或設(shè)備傳送到內(nèi)存緩沖區(qū)變量中,即輸入流。在進(jìn)行I/O操作時(shí),首先是打開(kāi)操作,使流和文件發(fā)生聯(lián)系,建立聯(lián)系后的文件才允許數(shù)據(jù)流入和流出,輸入或輸出結(jié)束后,使用關(guān)閉操作使文件與流斷開(kāi)聯(lián)系。

標(biāo)準(zhǔn)輸入輸出流(coutcin)在使用過(guò)程中,只要在程序的開(kāi)頭嵌入相應(yīng)的頭文件“iostream.h”即可。

文件的打開(kāi)和關(guān)閉是通過(guò)使用fstream類(lèi)的成員函數(shù)openclose來(lái)實(shí)現(xiàn)的,fstream類(lèi)用來(lái)對(duì)文件流進(jìn)行操作,fstream類(lèi)的頭文件是fstream.h

1.數(shù)據(jù)的輸出cout

cout是標(biāo)準(zhǔn)輸出設(shè)備即顯示器(默認(rèn)設(shè)備)連接的預(yù)定義輸出流。C++語(yǔ)言的插入運(yùn)算符“<<”向輸出流發(fā)送字符,cout是數(shù)據(jù)的目的地,插入運(yùn)算符“<<”把數(shù)據(jù)傳送到cout

輸出流對(duì)象cout輸出數(shù)據(jù)的語(yǔ)句格式為:

cout<<數(shù)據(jù)1<<數(shù)據(jù)2<<……<<數(shù)據(jù)n

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

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

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

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

控制符 ??

Dec 十進(jìn)制數(shù)輸出

Hex 十六進(jìn)制輸出

Oct 八進(jìn)制數(shù)輸出

setfill? 在給定的輸出域?qū)挾葍?nèi)填充字符c

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

setw(n) 設(shè)域?qū)挒?/span>n個(gè)字符

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

setiosflags(ios::scientific) 指數(shù)顯示

setiosflags(ios::left) 左對(duì)齊

setiosflags(ios::right) 右對(duì)齊

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

setiosflags(ios::uppercase) 十六進(jìn)制數(shù)大寫(xiě)輸出

setiosflags(ios::lowercase) 十六進(jìn)制數(shù)小寫(xiě)輸出

setiosflags(ios::showbase)

? 當(dāng)按十六進(jìn)制輸出數(shù)據(jù)時(shí),前面顯示前導(dǎo)符0x;當(dāng)按八進(jìn)制輸出數(shù)據(jù)時(shí),前面顯示前導(dǎo)符0

Endl 輸入一個(gè)換行符并刷新流

?

2.數(shù)據(jù)的輸入cin

cin是與標(biāo)準(zhǔn)輸入設(shè)備即鍵盤(pán)(默認(rèn)設(shè)備)連接的預(yù)定義輸入流。它從輸入流中取出數(shù)據(jù),數(shù)據(jù)從輸入提起運(yùn)算符“>>”處流進(jìn)程序。

輸入流對(duì)象cin輸入數(shù)據(jù)的語(yǔ)句格式為:

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

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

注意:“>>”操作符后除了變量名外不得有其他數(shù)字、字符串,否則系統(tǒng)會(huì)報(bào)錯(cuò)。

3.文件流及其有關(guān)的類(lèi)

文件是存儲(chǔ)在磁盤(pán)、磁帶等外部設(shè)備上的數(shù)據(jù)的集合,每一個(gè)文件都必須有一個(gè)唯一的文件名稱(chēng)。在使用文件前必須首先打開(kāi)文件,使用完畢后必須關(guān)閉文件。對(duì)文件的操作是由文件流類(lèi)完成的。文件流類(lèi)在流與文件之間建立連接。下圖是與文件操作相關(guān)的類(lèi)及其繼承關(guān)系。

ios

istream

ostream

ifstream

iostream

ofstream

fstream

?

ios

istream

ostream

ifstream

iostream

ofstream

fstream

?

1 幾個(gè)與文件處理相關(guān)的類(lèi)及其繼承關(guān)系結(jié)構(gòu)圖

下表是常用的I/O流類(lèi)庫(kù)的說(shuō)明,以及在編程中需要包含到程序中的頭文件。

2 常用I/O流類(lèi)庫(kù)說(shuō)明

類(lèi) 說(shuō) 編程中需要包含的頭文件

ios 流基類(lèi),是抽象類(lèi) ostream.h

istream 通用輸入流類(lèi)和其它輸入流類(lèi)的基類(lèi) iostream.h

ifstream 輸入文件流類(lèi) fstream.h

ostream 通用輸出流類(lèi)和其它輸出流類(lèi)的基類(lèi) iosream.h.

ofstream 輸出文件流類(lèi) fstream.h

iostream 通用I/O流類(lèi)和其它I/O流的基類(lèi) iostream.h

fstream I/O文件流類(lèi) fstream.h

?

4.文件的打開(kāi)與關(guān)閉

對(duì)文件的操作是由文件流類(lèi)完成的。文件流類(lèi)在流與文件間建立連接。由于文件流分為三種:文件輸入流、文件輸出流、文件輸入/輸出流,所以相應(yīng)的必須將文件流說(shuō)明為ifstreamofstreamfstream類(lèi)的對(duì)象,然后利用文件流的對(duì)象對(duì)文件進(jìn)行操作。

對(duì)文件的操作過(guò)程可按照一下四步進(jìn)行:即定義文件流類(lèi)的對(duì)象、打開(kāi)文件、堆文件進(jìn)行讀寫(xiě)操作、關(guān)閉文件,下面分別進(jìn)行介紹。

1)定義文件流對(duì)象

利用文件流類(lèi)可以定義文件流類(lèi)對(duì)象,方法是:

文件流類(lèi) 對(duì)象名;

如:

ifstream ifile; //定義一個(gè)文件輸入流對(duì)象

ofstream ofile; //定義一個(gè)文件輸出流對(duì)象

fstream iofile; //定義一個(gè)文件輸出/輸入流對(duì)象

2)打開(kāi)文件

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

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

其中:filename是一個(gè)字符型指針,指定了要打開(kāi)的文件名;mode指定了文件的打開(kāi)方式,其值如下表所示;access指定了文件的系統(tǒng)屬性,其取值為:

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

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

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

3???????? 系統(tǒng)文件

3 ios類(lèi)中定義的文件打開(kāi)方式

文件打開(kāi)方式

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

ios::out 以輸出(寫(xiě))方式打開(kāi)文件

ios::app 打開(kāi)一個(gè)文件使新的內(nèi)容始終添加在文件的末尾

ios::ate 打開(kāi)一個(gè)文件使新的內(nèi)容添加在文件尾,但下次添加時(shí),寫(xiě)在當(dāng)前位置處

ios::trunc 若文件存在,則清除文件所有內(nèi)容;若文件不存在,則創(chuàng)建新文件

ios::binary 以二進(jìn)制方式打開(kāi)文件,缺省時(shí)以文本方式打開(kāi)文件

ios::nocreate 打開(kāi)一個(gè)已有文件,若該文件不存在,則打開(kāi)失敗

ios::noreplace 若打開(kāi)的文件已經(jīng)存在,則打開(kāi)失敗

?

說(shuō)明:

1)在實(shí)際使用過(guò)程中,可以根據(jù)需要將以上打開(kāi)文件的方式用“|”組合起來(lái)。如:

ios::in|ios::out??????????????? 表示以讀/寫(xiě)方式打開(kāi)文件

ios::in|ios:: binary???????????? 表示以二進(jìn)制讀方式打開(kāi)文件

ios::out|ios:: binary??????????? 表示以二進(jìn)制寫(xiě)方式打開(kāi)文件

ios::in|ios::out|ios::binary?????? 表示以二進(jìn)制讀/寫(xiě)方式打開(kāi)文件

2)如果未指明以二進(jìn)制方式打開(kāi)文件,則默認(rèn)是以文本方式打開(kāi)文件。

3)對(duì)于ifstream流,mode參數(shù)的默認(rèn)值為ios::in,對(duì)于ofstream流,mode的默認(rèn)值為ios::out

3)文件的關(guān)閉

在文件操作結(jié)束(即讀、寫(xiě)完畢)時(shí)應(yīng)及時(shí)調(diào)用成員函數(shù)close()來(lái)關(guān)閉文件。該函數(shù)比較簡(jiǎn)單,沒(méi)有參數(shù)和返回值。

利用對(duì)象和相應(yīng)的成員函數(shù)對(duì)文件進(jìn)行讀寫(xiě)操作,我們將單獨(dú)介紹。

5.文件的讀寫(xiě)操作

在打開(kāi)文件后就可以對(duì)文件進(jìn)行讀寫(xiě)操作了。從一個(gè)文件中讀出數(shù)據(jù),可以使用文件流類(lèi)的getgetlineread成員函數(shù)以及運(yùn)算符“>>”;而向一個(gè)文件寫(xiě)入數(shù)據(jù),可以使用其putwrite函數(shù)以及插入符“<<”,如下表所示:

4 文件流類(lèi)的文件操作成員函數(shù)

函數(shù)原型 說(shuō)

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

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

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

put(char ch) 向文件寫(xiě)入一個(gè)字符

write(const char *pch,int count) 向文件寫(xiě)入多個(gè)字符,字符個(gè)數(shù)由count決定

?

順序文件操作:這種操作方式只能從文件的開(kāi)始處依次順序讀寫(xiě)文件內(nèi)容,而不能任意讀寫(xiě)文件內(nèi)容。

從一個(gè)文件中讀出數(shù)據(jù),可以使用getgetlineread成員函數(shù)以及運(yùn)算符“>>”;而向一個(gè)文件寫(xiě)入數(shù)據(jù),可以使用putwrite成員函數(shù)以及插入符“<<”。

總結(jié)

以上是生活随笔為你收集整理的C++流和文件流的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。