setw(int n)用來控制輸出間隔:函數
1 cout<<'s'<<setw(8)<<'a'<<endl;
輸出:spa
1 /* s 與 a 之間有7個空格,setw()只對其後面緊跟的輸出產生做用,如上例中,表示 'a' 共佔 8 個位置,不足的用空格填充。若輸入的內容超過setw()設置的長度,則按實際長度輸出 */ 2 s a
setw()默認填充的內容爲空格,能夠setfill()配合使用設置其餘字符填充:code
1 cout<<setfill('*')<<setw(5)<<'a'<<endl;
則輸出:blog
1 /*4個*和字符a共佔5個位置*/ 2 ****a
總結:ip
所謂域寬,就是輸出的內容(數值或字符等等)須要佔據多少個字符的位置,若是位置有空餘則會自動補足。好比咱們要設置域寬爲2,那麼當輸出一位數1的時候輸出的就是「1」,即在1前面加了一個空格。空格和數字1正好一共佔用了兩個字符的位置。ci
咱們在設置域寬和填充字符的時候要注意幾點:get
①設置域寬的時候應該填入整數,設置填充字符的時候應該填入字符。io
②咱們能夠對一個要輸出的內容同時設置域寬和填充字符,可是設置好的屬性僅對下一個輸出的內容有效,以後的輸出要再次設置。即 cout <<setw(2) <<a <<b;語句中域寬設置僅對a有效,對b無效。table
③setw和setfill 被稱爲輸出控制符,使用時須要在程序開頭寫上#include <iomanip>(#include "iomanip.h"),不然沒法使用。
iomanip.h是I/O流控制頭文件,就像C裏面的格式化輸出同樣. 如下是一些經常使用的函數:
dec | 置基數爲10 至關於"%d" |
hex | 置基數爲16 至關於"%X" |
oct | 置基數爲8 至關於"%o" |
setfill(c) | 設填充字符爲c |
setprecision(n) | 設顯示小數精度爲n位 |
setw(n) | 設域寬爲n個字符 |
setiosflags(ios::fixed) | 固定的浮點顯示 |
setiosflags(ios::scientific) | 指數表示 |
setiosflags(ios::left) | 左對齊 |
setiosflags(ios::right) | 右對齊 |
setiosflags(ios::skipws) | 忽略前導空白 |
setiosflags(ios::uppercase) | 16進制數大寫輸出 |
setiosflags(ios::lowercase) | 16進制小寫輸出 |
setiosflags(ios::showpoint) | 強制顯示小數點 |
setiosflags(ios::showpos) | 強制顯示符號 |
示例:
1 #include <iomanip> 2 #include <iostream> 3 using namespace std; 4 5 int main() 6 { 7 cout << hex << 17 << endl; //11 8 cout << 12345.0 << endl; //12345 9 cout << setiosflags(ios::scientific) << 12345.0 << endl; //1.234500e+004 10 cout << setprecision(3) << 12345.0 << endl; //1.235e+004 11 12 system("pause"); 13 14 return 0; 15 }