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
佔一個字符,s
和a
之間有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)
作用於全局(整個文件),除非再次修改