C++格式化輸出

C++常採用cout數據流來輸出字符,當然也可以使用printf語句(要包含stdio.h頭文件),但是在C++中還是常採用cout
cout可以使用setw(int n)來設置域寬,此操作符作用於後面的操作數,如:

cout<<"s"<<setw(8)<<"a"<<setw(4)<<"b"<<endl;

輸出結果:

`s       a   b`

其中setw(8)作用於”a“,setw(4)作用於”b“,默認靠右對齊方式,所以出現瞭如上所示結果,首先顯示”s“,然後”a“的域寬是8個字符,且靠右對齊(a佔一個字符,sa之間有7個空白字符),之後b的域寬是4,靠右對齊,所以前面會有三個空白字符。
setiosflags(ios::left)設置靠左對齊
setiosflags(ios::right)設置靠右對齊
setw(int n)默認的靠右對齊就是這種靠右對齊方式,如果設置爲靠左對齊,則會出現另外一種情況:

cout<<`setiosflags(ios::left)<<"s"<<setw(8)<<"a"<<setw(4)<<"b"<<endl;

結果如下:

sa       b

先輸出s,然後a的域寬設置爲8,靠左方式,之後b域寬設置爲4,在b後還有三個空白字符,實際的編譯結果可顯示
另外cout對於數據有默認輸出寬度,整數的默認寬度按其本身的寬度顯示,小數的域寬則是輸出6位有效數字。
setfill(char c)可用來填充域寬中的空白字符:

cout<<setfill('*')<<setiosflags(ios::left)<<"s"<<setw(8)<<"a"<<setw(4)<<"b"<<endl;

顯示結果如下:

sa*******b***

正如上文中所說,a後有7個字符,b後還有3個字符.
浮點數(小數)格式化輸出
setprecision(int n)設置浮點數輸出的有效數字位數

double m=1.23659456;
cout<<setprecision(4)<<m<<endl;

輸出結果:1.237,4位有效數字
可以使用setiosflags(ios::fixed)用定點的方式表示浮點數,和setprecision(4)結合可控制小數點後的小數位數,如下:

double m=1.23659456;
cout<<setiosflags(ios::fixed);
cout<<setprecision(4)<<m<<endl;
cout<<setprecision(2)<<m<<endl;

結果爲:

1.237
1.2366
1.24

使用定點方式控制浮點數時,若不設置精度,則小數後默認顯示6位有效小數

浮點數減少顯示位數時採用四捨五入保留位數

上述操作符中setw僅作用於其後的第一個操作數,而setfill、setiosflags、setiosflags(ios::fixed)、setprecision(int n)作用於全局(整個文件),除非再次修改

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章