輸入輸出流函數(模板)
#include<iostream> #include<iomanip> using namespace std; int main() {cout << setiosflags(ios::left|ios::showpoint); //設左對齊cout.precision(5); //設置除小數點外有五位有效數字cout << 123.456789 << endl;cout.width(10); //設置顯示域寬 10cout.fill('*'); // 在顯示區域空白處用*填充cout << resetiosflags(ios::left); //清除狀態左對齊cout << setiosflags(ios::right); //設置右對齊cout << 123.456789<<endl; cout << setiosflags(ios::left|ios::fixed); //設置左對齊,以固定小數位顯示cout.precision(3); //設置實數顯示三位小數cout << 999.1234457 << endl; cout << resetiosflags(ios::left|ios::fixed); //清除狀態左對齊和定點格式cout << setiosflags(ios::left|ios::scientific); //設置左對齊以科學技術法顯示cout.precision(3); 設置保留三位小數cout << 123.45678 << endl;return 0; }
運行結果:
exbot@ubuntu:~/wangqinghe/C++/time$ ./cout
123.46
****123.46
999.123
1.235e+02
?
cout.self和setiosflags一樣,cout.precision和setprecision一樣,cout.unself和resetiosflags一樣。
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) | 強制顯示符號 |
cout.self常見的標示:
標志 | 功能 |
boolalpha | 可以使用單純“true”和“false”來進行輸入/輸出的布爾值 |
oct | 用八進制格式顯示數值 |
dec | 用十進制格式顯示數值 |
hex | 用十六進制格式顯示數值 |
left | 輸出調整為左對齊 |
right | 輸出調整為右對齊 |
scientific | 用科學記數法顯示浮點數 |
fixed | 用正常計數方法顯示浮點數(與科學記數法相對應) |
showpoint | 顯示小數點和額外的零,即使不需要 |
showbase | 輸出時顯示所有數值的基數 |
showpos | 在非負數值前面顯示“+” |
skipws | 當一個流進行讀取時,跳過空白字符(space,tabs,newlines) |
unitbuf | 在每次插入以后,清空緩沖區 |
internal | 將填充字符回到符號和數值之間 |
uppercase | 以大寫的形式顯示科學記數法中的“e”和十六進制格式的“x” |
iostream中定義的操作符:
操作符 | 描述 |
resetiosflag(long f) | 關閉被指定為f的標識 |
setbase(int base) | 設置數值的基本數為base |
setfill(int ch) | 設置 填充字符為ch |
setiosflags(long f) | 啟用指定為f的標示 |
setprecision(int p) | 設置數值的精度(四色五入) |
serw(int w) | 設置域寬度為w |