C C 的流 stream 物件

2021-08-17 03:11:40 字數 1744 閱讀 7959

c/c++有以下幾種流物件的:

型別 名稱 作用

istream cin 從input通道讀入資料

ostream cout 將資料寫到標準output通道

ostream cerr 將錯誤資訊寫到標準error通道

ostream clog 將日誌資訊寫到標準logging通道

wistream wcin 從input通道讀入寬字元資料

wostream wcout 將寬字元資料寫到標準output通道

wostream wcerr 將寬字元錯誤資訊寫到標準error通道

wostream wclog 將寬字元日誌資訊寫到標準logging通道

注意,以上物件均是全域性物件,這意味著在多執行緒環境中使用它們時要非常小心,尤其是最常用的標準輸入輸出流(cin和cout)。

stream維護著一種狀態,標誌i/o是否成功,並且能夠指明失敗的原因。

stream定義了一些型別為iostate的產生過戶來反映stream的狀態。

這些狀態(iostate型別)是ios_base的成員:

static const iostate badbit,eofbit,failbit,goodbit;

其意義如下:

badbit 毀滅性的錯誤,未定義的(不確定的)狀態

eofbit 遇到end-of-file

failbit 錯誤,某個i/o操作未成功

goodbit 一切都好,沒有其他狀態位被設立

其中,failbit和badbit的卻別在於:

failbit表示某項操作未能完成,單stream大體ok,通常是讀入格式錯誤,如要讀乙個int值,輸入的卻是字串(通常是可以挽回的)。

badbit表示因不明原因丟失或損壞資料,如將stream定位於檔案起始端的前方(通常是不可挽回的)。

注意,通常eofbit和failbit同時出現,因為在end-of-file之後讀取操作也會失敗!

這些狀態的常量定義域ios_base類裡,並非全域性的,因此使用的時候需要加上域作用符(ios_base或者其子類),如:

std::ios_base::eofbit,std::ios::eofbit ///(ios派生自ios_base)

c++還定義了一些處理stream狀態的成員函式:

good() 若stream正常無誤則返回true(表示goodbit成立)

eof() 若遇到end-of-file則返回true(表eofbit成立)

fail() 若發生錯誤則返回true(表failbit||badbit成立)

bad() 若發生毀滅性錯誤則返回true(表badbit成立)

rdstate() 返回當前stream已設立的所有標誌

clear() 返回當前stream所有標誌

clear(state) 返回當前stream所有標誌後,設立state

setstate(state) 追加標誌state

後三個常用於異常處理。

關於4個狀態標誌的解釋:

1.輸入(輸出)物件中的流狀態成員標記了輸入(輸出)流當前的狀況,當eofbit、badbit、failbit三個標記位均為0時表示流狀態正常。

2.一但某個或幾個標記位被設定,表示物件的流狀態出現相應狀況,流將對後面的輸入(輸出)關閉,直到標記位被清除。

3.只有在流狀態良好(goodbit)的情況下,if或者while對該輸入(輸出)物件的判斷才能是true。

複製**

if(cin>>input)

cout<

判斷stream流中Optional物件是否為空

使用stream流過濾集合獲取到optional物件,如果有空值不加判斷直接get 取值就會報錯,但是用常見的 null是不能判斷出來的,可以使用optional自帶的方法ispresent optionaldict orggrade.stream filter org org.getvalue e...

判斷stream流中Optional物件是否為空

使用stream流過濾集合獲取到optional物件,如果有空值不加判斷直接get 取值就會報錯,但是用常見的 null是不能判斷出來的,可以使用optional自帶的方法ispresent optionaldict orggrade.stream filter org org.getvalue e...

Stream流的使用

本文簡單記述stream的使用 第一種 最常用的,從資料庫查出資料後,需要封裝成vo類,把需要的字段返回給前端 listorderlist orderservice.list listlist orderlist.stream map order collect collectors.tolist ...