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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++流对象

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

1、概念
在程序設(shè)計(jì)當(dāng)中免不了要對數(shù)據(jù)進(jìn)行輸入輸出,在C語言中我們經(jīng)常使用scanf()、printf()進(jìn)行輸入輸出操作,但是在C++中,我們使用流對象來對數(shù)據(jù)進(jìn)行輸入輸出操作,數(shù)據(jù)流在輸入源和輸出目標(biāo)之間充當(dāng)了橋梁的作用。
根據(jù)操作的數(shù)據(jù)流對象的不同,C++流對象可以分為控制臺流(iostream)、文件流(fstream)以及字符串流(sstream),上述三種類的流均繼承基礎(chǔ)流類(ios_base、ios)。
具體關(guān)系如下圖所示:

2、控制臺流(iostream)
為了控制臺程序輸入輸出的方便,C++控制臺流以對象的形式提供了幾個(gè)常用的流對象方便在控制臺對數(shù)據(jù)流進(jìn)行輸入輸出,分別是:cin(輸入流)、cout(輸出流)、cerr(不帶緩存的錯(cuò)誤輸出流)、clog(帶緩存的錯(cuò)誤輸出流)。

cin對象:當(dāng)代碼執(zhí)行到cin函數(shù)時(shí),控制臺會彈出輸入框,讓你輸入,此時(shí)當(dāng)你輸入完數(shù)據(jù),敲下回車鍵,cin對象會從緩沖區(qū)讀取數(shù)據(jù)流直到遇到第一個(gè)空白符為止。所以,使用cin讀取數(shù)據(jù)會跳過空白符(例如,空格,tab、制表符等等),如果想讀取這些空白符的話需要使用getchar()函數(shù)。但是如果想要讀取一行帶有空白符的數(shù)據(jù)怎么辦呢?cin對象有一個(gè)getline函數(shù):

cin.getline(char s[], int nLength)

注意該函數(shù)雖然能夠讀取空白符,但是不能讀取換行符(回車符)。其實(shí)每個(gè)輸入流對象都有其對應(yīng)的getline()函數(shù),如文件流和字符串流,都有其對應(yīng)的getline()函數(shù)。
在std命名空間下,有一個(gè)單獨(dú)的getline()函數(shù),但是該函數(shù)時(shí)使用string對象作為參數(shù)的,即:

getline(cin, str)

但是該函數(shù)也是不能夠讀取換行符的,可以讀取空白符。
如果實(shí)現(xiàn)有讀取換行符的需求,只能使用GCC進(jìn)行讀取了。

cout對象:使用cout進(jìn)行輸出時(shí),可以使用控制符進(jìn)行格式化輸出,比如使用十進(jìn)制或者十六進(jìn)制進(jìn)行輸出,但是有一點(diǎn)需要注意,進(jìn)行格式化輸出時(shí),在程序單位的開頭除了要加iostream頭文件外,還要加iomanip頭文件。

int nInput = 15 cout<<hex<<nInput; 輸出結(jié)果為fcout<<setiosflags(ios∷showpos)<<nInput; 輸出: +15

3、文件流(fstream)
C++在文件流中提供三個(gè)派生類以方便對文件數(shù)據(jù)流進(jìn)行操作(注意提供的是類,而不像控制臺流直接提供對象),分別是ifstream,ofstream,iofstream。

ifstream:該類主要是處理從外存流向內(nèi)存的數(shù)據(jù)流。
ofstream:該類主要是處理從內(nèi)存流向磁盤的數(shù)據(jù)流。
fstream:該類主要用來處理磁盤和內(nèi)存之間數(shù)據(jù)流的輸入和輸出。

要想處理磁盤文件,首先必須先定義一個(gè)文件流對象,然后將要處理的文件與相應(yīng)的文件流對象進(jìn)行綁定,即該文件流對象專門用來處理該文件的數(shù)據(jù)流。

每一個(gè)文件流類都定義了一個(gè)成員函數(shù) open 來定位給定的文件,并視情況打開為讀或?qū)懩J健H绻趧?chuàng)建文件流對象時(shí),提供了文件名,則open會被自動(dòng)調(diào)用。沒有提供文件名,將會創(chuàng)建空文件流對象,可以隨后調(diào)用 open 將它與文件關(guān)聯(lián)起來。同時(shí)每一個(gè)文件流類型都定義了一個(gè)文件模式,用于指出如何使用該文件是只讀模式還是讀寫模式等等。

ifstream input(ifile); // 構(gòu)造一個(gè)ifstream 對象input并綁定文件ifile打開該文件; ofstream output; // 輸出文件流,未關(guān)聯(lián)任何文件 output.open(ofile); // 打開指定文件

在此要對open函數(shù)進(jìn)行檢查,因?yàn)檎{(diào)用open函數(shù)可能會失敗。因此寫代碼時(shí)應(yīng)該加上判斷:

if(out)

一旦一個(gè)文件打開,那么該文件流對象就和該文件綁定在一起,如果文件流想要綁定另外的文件,則必須先要關(guān)閉與之前文件的綁定

out.close() out.open(otherFile)

當(dāng)一個(gè)文件流離開其作用域時(shí),與之關(guān)聯(lián)的文件也會失效。

4、字符串輸入輸出流(sstream)
將字符串作為流進(jìn)行處理,使得操作字符串像操作流一樣,其相應(yīng)的派生類有istringstream、ostringstream、iostringstream。這些類可以從string讀取數(shù)據(jù)也可以將數(shù)據(jù)寫入string中,它們操作的對象是內(nèi)存中的string,所以嚴(yán)格意義上來講,它們不能稱之為輸入輸出流,但是為了方便講述,我們在此使用輸入輸出流。字符串流也定義了一些函數(shù)來方便管理和操作字符串,比如:

stringstream strStream; //定義一個(gè)字符串流對象,但未綁定任何字符串 strStream.str(s);//字符串流對象strStream保存字符串s的一份拷貝 strStream.str()//返回字符串流保存的數(shù)據(jù)。 超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

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

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