setw(int n)用法

實例:
ios

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  }
相關文章
相關標籤/搜索