【轉】c++頭文件iomanip.h中setw()、setprecision()、setbase

    #include <iostream>    //不要用iostream.h ,會出現好多問題
    #include <iomanip> // io 流控制頭文件, 主要是一些操縱用法如setw(int n),setprecision(int n)
                                    //,setbase(int   n),setfill(char c)的.
    ▲setw(n)用法: 通俗地講就是預設寬度
    如 cout<<setw(5)<<255<<endl;
    結果是:
    (空格)(空格)255
    ▲setfill(char c) 用法 : 就是在預設寬度中如果已存在沒用完的寬度大小,則用設置的字符c填充
    如 cout<<setfill('@')<<setw(5)<<255<<endl;
    結果是:
    @@255
    ▲setbase(int n) : 將數字轉換爲 n 進制.
    如 cout<<setbase(8)<<setw(5)<<255<<endl;
         cout<<setbase(10)<<setw(5)<<255<<endl;
        cout<<setbase(16)<<255<<endl;
    結果是:
    (空格)(空格)377
    (空格)(空格) 255
    (空格)(空格) f f
    ▲ setprecision用法
    使用setprecision(n)可控制輸出流顯示浮點數的數字個數。C++默認的流輸出數值有效位是6。
    如果setprecision(n)與setiosflags(ios::fixed)合用,可以控制小數點右邊的數字個數。setiosflags(ios::fixed)是用定點方式表示實數。
    如果與setiosnags(ios::scientific)合用, 可以控制指數表示法的小數位數。setiosflags(ios::scientific)是用指數方式表示實數。
    例如,下面的代碼分別用浮點、定點和指數方式表示一個實數:

    #include <iostream.h>
    #include <iomanip.h> //要用到格式控制符

    void main()
    {
    double amount = 22.0/7;
    cout <<amount <<endl;
    cout <<setprecision(0) <<amount <<endl
    <<setprecision(1) <<amount <<endl
    <<setprecision(2) <<amount <<endl
    <<setprecision(3) <<amount <<endl
    <<setprecision(4) <<amount <<endl;

    cout <<setiosflags(ios::fixed);
    cout <<setprecision(8) <<amount <<endl;

    cout <<setiosflags(ios::scientific)


    <<amount <<endl;


    cout <<setprecision(6); //重新設置成原默認設置
    }

    運行結果爲:
    3.14286
    3
    3
    3.1
    3.14
    3.143
    3.14285714
    3.14285714e+00

    該程序在32位機器上運行通過。
    在用浮點表示的輸出中,setprecision(n)表示有效位數。
    第1行輸出數值之前沒有設置有效位數,所以用流的有效位數默認設置值6:第2個輸出設置了有效位數0,C++最小的有效位數爲1,所以作爲有效位數設置爲1來看待:第3~6行輸出按設置的有效位數輸出。
    在用定點表示的輸出中,setprecision(n)表示小數位數。
    第7行輸出是與setiosflags(ios::fixed)合用。所以setprecision(8)設置的是小數點後面的位數,而非全部數字個數。
    在用指數形式輸出時,setprecision(n)表示小數位數。
    第8行輸出用setiosflags(ios::scientific)來表示指數表示的輸出形式。其有效位數沿用上次的設置值8

    setw(n)是設置域寬。
    就是你的輸出要佔多少個字符
    比如:
    cout<<setw(5)<<12345<<endl;
    就輸出
    12345
    cout<<setw(6)<<12345<<endl;
    輸出
    12345
    而如果你要輸出的字符寬度超出了setw(n)的n值,就按輸出字符的寬度輸出。
    如你的cout<<setw(4)<<12.3456<<endl;
    就輸出12.3456

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