在C++中,setw(int n)用來控制輸出間隔。
例如:
cout<<'s'<<setw(8)<<'a'<<endl;
則在屏幕顯示
s a
//s與a之間有7個空格,setw()只對其后面緊跟的輸出產生作用,如上例中,表示'a'共占8個位置,不足的用空格填充。若輸入的內容超過setw()設置的長度,則按實際長度輸出。
setw()默認填充的內容為空格,可以setfill()配合使用設置其他字符填充。
如
cout<<setfill('*')<<setw(5)<<'a'<<endl;
則輸出:
****a //4個*和字符a共占5個位置。
所謂域寬,就是輸出的內容(數值或字符等等)需要占據多少個字符的位置,如果位置有空余則會自動補足。比如我們要設置域寬為2,那么當輸出一位數1的時候輸出的就是“ 1”,即在1前面加了一個空格。空格和數字1正好一共占用了兩個字符的位置。
我 們在設置域寬和填充字符的時候要注意幾點:①設置域寬的時候應該填入整數,設置填充字符的時候應該填入字符。②我們可以對一個要輸出的內容同時設置域寬和 填充字符,但是設置好的屬性僅對下一個輸出的內容有效,之后的輸出要再次設置。即 cout <<setw(2) <<a <<b;語句中域寬設置僅對a有效,對b無效。③setw和setfill 被稱為輸出控制符,使用時需要在程序開頭寫上#include "iomanip.h",否則無法使用。
setw(n) 設域寬為n個字符 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) 強制顯示符號 示例: #include <iomanip.h> #include <iostream> int main() { cout<<12345.0<<endl;//12345 cout<<setiosflags(ios::scientific)<<12345.0<<endl;//1.234500e+004 cout<<setprecision(3)<<12345.0<<endl;//1.235e+004 return 0; }
原文:http://hi.baidu.com/golny/item/9fbbc4f11afe2f1da729884b