C++ cout.setf() 格式化輸出

學過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()的第二原形:

第二原型包含兩個參數,第一個參數和第一原型裏的參數一樣,第二個參數指出要清除第一參數中的哪些位,也就是說,在第二原型中,第一個參數指出要設置哪些位,第二個參數指出要清除哪些位。

雖然聽起來很麻煩,但實際上用起來卻很簡單,只需按自己的實際需求在下表中找到對應的參數套上去就可以了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章