C I O流 格式控制(下)

2021-09-27 02:58:58 字數 2609 閱讀 7491

操縱符

作用endl

輸出時換行並重新整理流

ends

輸出時在字串後插入空字元(null)作為尾符

flush

重新整理,把流從緩衝區輸入到目標裝置

ws輸入時略去空白字元

dec以十進位制形式輸入或輸出整型數

hex以十六進製制形式輸入或輸出整型數

oct以八進位制形式輸入或輸出整形數

這些操縱符可以直接跟在 「cout」 或 「cin」 之後使用,如:

cout << hex << a << endl ;
是把 a 用十六進製制輸出後再換行。

操縱符作用

setbase(int n)

設定轉換基數為n(0、8、10、16),預設為0,表十進位制

resetiosflags(long f)

消除引數f指定的標誌位,同時用於輸入輸出

setiosflags(long f)

設定引數f指定的標誌位

setfill(char c)

設定填充字元

setprecision(int n)

設定浮點數精度(預設為6)

setw(int n)

設定域寬

操縱符可代替 ios 成員函式的功能,且更為簡單:

int a;

cout << "請輸入a:";

cin >> a;

cout << "十進位制:" << a << endl;

cout << "八進位制:" << oct << a << endl;

cout << "十六進製制:" << setbase(16) << a << endl;

cout << "十六進製制規格化:" << setiosflags(ios::showbase) << a << endl;

cout << dec << setw(10) << setfill('@') << a << endl;

double b = 12.308955555;

cout << "預設精度:" << b << endl;

cout << "顯示無效0:" << setiosflags(ios::showpoint) << b << endl;

cout << setprecision(10) << "調整精度為10:"<< b << endl;

vs2017除錯結果 :

可以發現:

①setiosflags() 可以設定格式狀態字,系統預設的對齊方式為右對齊;

②setw() 設定域寬只對靠近它的輸出有用;

③在測試精度時,使用的原資料是「12.3089555555」。在按預設精度輸出後,輸出:12.309。但這是 四捨五入+進製+捨棄無效0 得出的結果,所以

系統預設精度應該是「6」而不是「5」。

1、最常用的用法:cin >> (後跟變數名直接進行緩衝區讀取)

在使用字元陣列名來輸入字串的時候,在遇見空白字元時會直接結束讀取。

2、cin.get()

①char = cin.get(),cin.get(char)

從緩衝區內,讀取字元,可讀取空白和換行符;

遇到換行符結束,不會捨棄緩衝區的空格和換行符;

一般使用不接收返回值的函式,來捨棄不必要的空白字元。

※較難理解

詳解:輸入 「1空格」 進入緩衝區

st2先讀取1,st1再讀取換行

在加上格式操縱符 endl 於是會造成兩次換行

②cin.get(char ,length)

用來接收一行字元,長度為length-1(最後一位會放』\0』),可讀取空格。

3、cin.getline(char ,length,char)

從緩衝區讀取一行字元,長度為length-1(最後一位會放』\0』),可接收空格;

第三個引數是結束字元(在讀取到結束字元時,提前結束讀取):

一般只用前兩個引數,第三個預設為』\0』

4、getline(cin,str)

該函式為string檔案所定義,需包含 「string」 標頭檔案;

在讀取字串時可包含空格,遇到換行結束。

5、char *gets(char *buffer)

從緩衝區讀取字串,以換行結束(最後一位會放』\0』);

成功返回位址,錯誤返回 「null」,需加 「string」標頭檔案。

6、int getchar()

接收乙個字元,包含空格,以換行結束;

成功返回讀取值,失敗返回 『eof』,需加 「string」標頭檔案。

C I O流常用控制符

dec 置基數為10 相當於 d hex 置基數為16 相當於 x oct 置基數為8 相當於 o setfill c 設填充字元為c setprecision n 設顯示小數精度為n位 setw n 設域寬為n個字元 setiosflags ios fixed 固定的浮點顯示 setiosflag...

C I O流常用控制符

dec 置基數為10 相當於 d hex 置基數為16 相當於 x oct 置基數為8 相當於 o setfill a 設填充字元為a setprecision n 設顯示小數精度為n位 setw n 設域寬為n個字元 setiosflags ios fixed 固定的浮點顯示 setiosflag...

c IO之預定義格式控制

在c語言裡,我們可以通過函式printf和scanf來進行格式化控制。而在c 中仍然包含了前者,但還提供了以下兩種格式控制的方法 1 使用流成員函式進行格式控制 2 使用預定義操作符進行格式控制。下面我來一一介紹 1.流成員函式主要是指ios類 流基類 中的,分別有 1 設定狀態標誌流成員函式set...