C++常用流格式控制符的用法
流格式控制符定義在<iomanip>標頭檔案中。
常用的流格式控制符(std::cout<<)
控制符 |
描述 |
setw(width) |
指定列印欄位的寬度 |
setprecision(n) |
設定一個浮點數的精度 |
fixed |
將一個浮點數以定點數的形式輸出 |
showpoint |
將一個浮點數以帶小數點、帶結尾0的形式輸出,即便沒有小數部分 |
left |
輸出內容左對齊 |
right |
輸出內容右對齊 |
1. setw(width)
預設情況下,輸出內容需要多少個位置,cout就僅僅佔用那麼多螢幕位置。你可以使用setw(width),
例如:
cout << setw(8) <<"C++" << setw(6) << 101 << endl;
cout << setw(8) <<"Java" << setw(6) << 101 << endl;
cout << setw(8) <<"HTML" << setw(6) << 101 << endl;
在第1行程式碼中,setw(8)指明“C++“佔8個輸出位置。因此,在”C++“之前列印了5個空格
setw(n)每次只作用一個輸出欄位,所以,要想每個欄位輸出都設定寬度,必須每次都要寫一遍setw(n)
2. setprecision(n)
setprecision(n)指定一個浮點數的精度。
1.)可以指定一個浮點數列印幾位數字,其中n是總位數!!包括小數之前和之後的數字。超出的位數會被四捨五入。
(setprecision(n)不是捨棄,在高精度向低精度轉換時,超出部分會被捨棄,如一個doublek =1.5,int i = k ,這時候0.5被捨去,i = 1,
高精度向低精度轉換超出位數會被捨棄!)
例如:
double num = 1.23456;
cout << setprecision(2) << num << endl; //---- 輸出1.2
cout << setprecision(4) << num << endl; //---- 輸出1.235
cout << setprecision(5) << num << endl; //---- 輸出1.22346
2)與setw(width)不同setprecision(n)一直作用到下一個setprecisin(n)之前,所以,只需要寫一個setprecision(n)就可以。setw()要每次都寫
C++四捨五入用
3. fixed
fixed可以強制數值不以科學技術法顯示,即只用小數形式顯示。
(在遇見大的浮點數時候,計算機會以科學技術法形式顯示浮點數)
預設情況下,使用fixed之後,小數點後面數字位數為6,
如:
double i = 1.23;
cout << fixed << i << endl;
會輸出1.230000
3)我們可以使用fixed和setprecision(n)一起使用的方法,來改變這個小數點後的位數,當setprecision(n)作用於fixed之後時候,
setprecision(n)指定的是小數點後的數字位數
如:
double k = 3.141592653;
cout << fixed << setprecision(2) << k << endl;
輸出:3.14
這時候,後面也會四捨五入,,即只要用了setprecision(n)就會四捨五入
4)一旦使用了fixed之後,它會作用於後面所有的浮點數.
5)注意,預設情況下,沒有小數的部分不會顯示小數點。但使用fixed之後,會強制顯示小數點。
如:
double i = 1;
cout << fixed << i << endl;
顯示1.000000
4. showpoint(與setprecision(n)一起使用)
showpoint強制小數後面以0顯示。
cout << setprecision(6);
cout << showpoint << 1.23 << endl; //----顯示1.23000
cout << showpoint << 123.0 << endl; //----顯示123.000
5. right/left 對齊方式
大多數系統預設情況下為右對齊,
可以使用;eft ,將輸出格式左對齊
用法如下:
cout << left;
cout << setw(8) << 1.23 <<endl;
cout << setw(8) << 1.23456 <<endl;
本文參考:《C++程式設計》 (美)Y.Daniel Liang(譯)王剛劉曉光
課本截圖: