1. 程式人生 > >C++ Primer筆記(八)

C++ Primer筆記(八)

  1. 概念上,裝置型別和字元大小不會影響我們要執行的IO操作,這是通過繼承實現的,如ifstreamistringstream都繼承自istream,因此我們是如何使用cin,就同樣可以使用這些型別的物件
  2. IO物件是沒有拷貝和賦值的,所以不能將形參和返回型別設定為流型別,只能設定為引用型別且不能是const,因為讀寫一個流會改變其狀態
  3. 定義了一些函式和標誌來訪問和操作流的條件狀態,一旦一個流發生錯誤,則其上後續的IO操作都會失敗,無錯時才能從它讀取資料,向它寫入資料,所以在操作流時應當檢查它是否處於良好狀態while(cin>>x)
  4. 查詢流的狀態,iostate型別的物件表示特定的IO條件,與位運算子一起使用來檢測或者設定多個標誌位。所以標準庫定義了一系列函式來查詢這些標誌位的狀態,good在所有錯誤位未置位的情況下返回true,而bad,fail和eof在對應錯誤位被置位時返回true
  5. 流物件的rdstate()成員返回一個iostate值來表示當前狀態,而clear()不帶引數的版本清除所有標誌位,帶引數的版本表示流的新狀態。setstate()將輸入流置為原有狀態 ,流的狀態為0表示未發生錯誤。