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