學過C語言的都知道 ,對於C語言的格式化輸出很簡單的,畢竟是面向過程的語言.
例如: 輸出特定的位數:
float a = 10.0;
printf("%3.3f",a);
輸出的結果就是10.000了.
3.3的含義就是: 對於第一個3 沒啥作用,對於小數點後的3代表 小數點後保留三位.在這裏就不在列舉其他的了,有興趣的可以試試其他書.下面我們進入正題.
setf()有兩種原型,分別是:
1.fmtflags setf(fmtflags) //原型一
2.fmtflags setf(fmtflags,fmtflags) //原型二
// fmtflags 是 bitmask 類型(一種用來存儲各個位值的類型)的typedef 名
// 顯而易見,兩個原型的區別就在參數的個數上
setf()的第一個原型:
C++ 爲標準輸入和輸出定義了一些格式標誌,他可以通過flags() setf() 和 unsetf() 這函數來控制.
例如:
cout.setf(ios_base::left); //表示對所有的cout的輸出進行左對齊調整.
還有一些常見的標誌:
// 形式一:
cout << showpos << 255 <<endl;
//形式二:
showpos(cout);
cout << 255 <<endl;
//形式三:cout.setf(ios_base::showpos);
cout << 255 <<endl;結果:
+255
+255
+255
也可以通過使用下面的操作符:
例如當我們設置dec和 標誌時;
cout << dec; // 設置dec 表示
設置endl 標誌時
cout << endl; //輸出換行標識,並清空緩存區
iostream中定義的操作符:
iomanip中定義的操作符:
#include <iomanip>
cout << setiosflags(ios_base::scientific) << 255.255 << endl;
cout << setiosflags(ios_base::scientific); //啓用scientific標誌
cout << resetiosflags(ios_base::scientific); //關閉scientific標誌
cout << setprecision(4) << 255.255 << endl; //設置輸出數值的精度爲4位2.552550e+02
255.3
setf()的第二原形:
第二原型包含兩個參數,第一個參數和第一原型裏的參數一樣,第二個參數指出要清除第一參數中的哪些位,也就是說,在第二原型中,第一個參數指出要設置哪些位,第二個參數指出要清除哪些位。
雖然聽起來很麻煩,但實際上用起來卻很簡單,只需按自己的實際需求在下表中找到對應的參數套上去就可以了。