使用 cout 输出数据之控制输出格式(一)
cout調用格式化成員函數
ios_base類提供了一組設置格式化狀態標志的成員函數, 包括 setf() 、unset f() 和flags() .格式化狀態標志通過一個二進制位設置,如果設置了某個狀態標志,則對應位為1;否則為0.ios_base類中用于設置輸出格式的狀態標志。(不是函數),如表所示
介紹幾個常用的函數:
(1) setf()
用于設置狀態標識,把指定位的狀態標識為1.
格式一功能:用flag設置流格式, 保留流中原有格式, 相當于在原有流狀態標志的基礎上添加flag標志。例如:(重要)
cout.setf(ios::fixed);//設置定點小數ios是ios_base的派生類,也可以用ios_base代替ios;
格式二功能:用flag和mask共同設置流格式, 清除mask狀態標志位中不屬于flag的標志、例如:
cout.setf(ios::dec,ios::basefiled);//設置整數的進制數為八進制。(第二個參數不可以省略、因為如果省略了第二個參數,設置形式同格式一,意思是愛五整數的八進制狀態標志位為1,同時保留原有的十進制狀態標志。此時,相當于即設置了八進制格式、又設置了十進制格式。這樣,設置的八進制格式將不起作用。)
另外.setf 函數一次可以設置多個狀態, 用位“或”(“|”) 運算符連接要設置的各個社態標志。例如:
cout.setf(ios::uppercase|ios::scientifific);//以科學計數法輸出浮點數,字母E大寫(2)width()
輸出域寬是指數據輸出時所占的字節數, 即占多少列。用width() 函數設置輸出域寬。
格式二設置域寬為n,返回設置前的域寬,設置的域寬==僅對其后的第一個輸出有效,輸出數據后域寬重新設置為0。==例如:
cout.width(5);//設置下一個數據輸出是域寬為5.(3)precision()
設置輸出精度為n位,返回設置前的精度,設置的精度始終有效,直到重新設置精度為止。
精度值n的最小值為1,如果n等于0,其行為未定義, 不同的編譯器處理結果不同。例如, vs 2013按默認精度顯示, 而Code::Blocks按科學計數法形式只輸出一個有效數位.
在默認格式下,==參數n是指有效數位的個數。==例如:
若使用 setf(ios::fixed);結合,則輸出的是小數位數。
float pi=3.1415; cout.setf(fixed); cout.precision(3); cout<<pi; //輸出 3.145;(4)fill()
當輸出數據的位數小于域寬時需要用字符來填充,使之滿足輸出域寬的要求,默認填空符是空格。
總結
以上是生活随笔為你收集整理的使用 cout 输出数据之控制输出格式(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用cout输出数据之使用成员函数
- 下一篇: 使用 cout 输出数据之控制输出格式(