每個輸出流都有 precision 成員函數,一旦為某個輸出流調用了 precision 函數,向該流輸出帶小數點的數字時候,要么總共保留兩位有效數字,要么在小數點之后保留兩位,具體實現方式由編譯器決定。precision函數只對指定的流生效。
setf 成員函數是set flags的縮寫,不是set format的縮寫!是以二選一的方式來做一件事情的指令。
ios::fixed 標志導致 流 采用 定點計數法 來輸出double類型的數字,而不是用采用 e記數法
ios::showpoint 標志要求 流 總是在 浮點數 中包含小數點。
ios::scientific 標志會用 e記數法 輸出數字。
ios::showpos 標志正整數前會輸出 + 號
ios::right標志如果使用,同時使用了 width 指定了域寬,輸出的下一項會采用 右對齊。默認為此項
ios::left標志如果使用,同時使用了 width 指定了域寬,輸出的下一項會采用 左對齊
width 成員函數用來設置 域寬。例如:
cout << "a"; cout.width(4); cout << 7 << endl;
則輸出 a 7。a與7之間有3個空格,因為系統默認是設置 ios::right 右對齊。
注意 width 成員函數只適應于下一個要輸出的項,如果要輸出多個項,要調用多次width,如果嫌麻煩,可以使用流操縱元 setw。
設置的任何標志都可以取消設置,通過調用 unsetf 成員函數即可取消設置,例如:
cout.unsetf(ios::showpos);
即可取消正整數前面顯示 + 號。
setw 和 setprecision 操縱元。
操縱元是以非傳統的方式調用的函數。操縱元位于插入操作符 << 之后。兩個操縱元均在 iomanip 庫中,要想使用,需要調用該庫。
setw 操縱元和 width 成員函數作用一樣,要想多次設置域寬,需要調用多次 setw 操縱元。實際上,setw 操縱元就是調用了 width 成員函數。如下代碼:
cout << "a" << set(5) << 1 << set(5) << 2 << set(7) << 3 << endl;
該語句輸出為:a 1 2 3。其中 1、2 前面有4個空格,3 前面有 6 個空格。
setprecision 操縱元和 precision 成員函數功能一樣。如下代碼:
cout.setf(ios::fixed); cout.setf(ios::showpoint); cout << "a" << setprecision(2) << 1.2 << 2.3 << endl;
setprecision 操縱元與 precision 成員函數一樣,設置之后一直生效。上例輸出結果:1.20 2.30。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。