1. 程式人生 > >c++學習筆記之輸入/輸出流

c++學習筆記之輸入/輸出流

區別於char,用於儲存unicode字元。而char是單位元組,只能儲存ascii字元。2、cin/cout/cerr/clog
cerr無緩衝錯誤流          clog有緩衝錯誤流3、輸出cout
(1)要列印一個表示字串的char *的值(即第一個字元的記憶體地址),“<<”直接列印不行,因為已經被過載為將char *資料型別作為字串來列印。
        解決方法是將char *強轉為void *型別(c++中輸出地址,都要這樣轉)
(2)put函式用於輸出字元,可以聯級使用,如:cout.put('A').put('\n')4、輸入cin
eof函式:返回是否已經到流結尾
get函式:從流輸入一個字元並作為返回值返回,在流結尾會返回EOF值。有三個版本:無引數,一個字元陣列引數,三個引數。
                 三引數版本取多個字元放入字元陣列中。引數包括一個字元陣列,一個數組長度和一個分隔符(預設'\n')。分隔符不放入字元陣列中,但留在輸入流中。

getline函式:與get的三引數版本類似,引數包括一個字元陣列和一個數組長度。不同的是將分隔符從流中提取出來丟棄
ignore函式:讀取並丟棄一定數量字元(預設一個),遇到指定分割符停止(預設EOF)
putback函式:將先前使用get函式獲取的字元再放回流中。
peek函式:返回輸入流下一字元,但不從流中移除。
(1)c++有型別安全的I/O,如遇到意料之外的資料型別,各種相應的錯誤位會被設定。
(2)非格式化的I/O函式有read、write和gcount。gcount返回最近一次輸入操作讀取的字元數。5、流操作符
(1)整型流基數:十進位制dex,八進位制oct,十六進位制hex,自定義進位制setbase。如:cout<<setbase(6)<<132
(2)浮點精度:precision和setprecision。如:
cout.precision(2);
cout<<1.675

cout<<setprecision(2)<<1.675;
(3)域寬:width和setw。不是粘性的,當輸出域寬大於指定域寬不截短
,完整列印。使用同上。
(4)自定義輸出流操作符:返回型別和引數都必須是ostream&型別。如:
ostream& endLine(ostream& output){
     return output<<'\n'<<flash;
}
使用:cout<<'a'<<endLine<<'b'6、流的格式狀態和流操作符
(1)尾數零和小數點:showpoint
(2)對齊:left、right、internal        internal符號左對齊,數字右對齊,如“+    13”、“0x   13”。
(3)內容填充:fill、setfill
(4)整型流基數:showbase、noshowbase     八進位制以0開頭如0132,十六進位制以0x開頭如0x132
(5)科學計數法和定點小數:scientific浮點數以科學計數法格式輸出;fixed浮點數以指定小數位數顯示。
(6)大小寫:uppercase和nouppercase
(7)布林格式:boolalpha以true和fasle顯示;noboolalpha以1和0顯示。(c++中bool預設顯示1和0)

(8)設定重置格式狀態:flag——無參函式返回當前格式(fmtflags型別);單參(fmtflags型別)函式將格式重置會引數的狀態
(9)強制輸出加號(正號):showpos和noshowpos7、流的錯誤狀態