新聞中心
C++中,將數(shù)據(jù)從一個對象到另一個對象的流動抽象為“流”(stream)。按流動的方向不同,構成輸入/輸出流。對于流數(shù)據(jù)的輸入輸出格式,C++提供了兩種不同的控制方式,一種是使用ios_base類提供的setf、width等函數(shù)設置輸入輸出格式,另一種是通過重載的格式控制符“<<”、“>>”以及流格式控制對象進行設置。

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都做網(wǎng)站、成都網(wǎng)站制作、高臺網(wǎng)絡推廣、微信小程序開發(fā)、高臺網(wǎng)絡營銷、高臺企業(yè)策劃、高臺品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供高臺建站搭建服務,24小時服務熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
大部分流的輸入輸出格式可以用setf函數(shù)來設置。該函數(shù)有兩種重載形式。其但參數(shù)的setf原型為:
fmtflage setf(fmtfalg flag)
參數(shù)flag說明所要設置的格式,由ios_base給出,可取如下枚舉常量:
- enum{
- left =0x0001, //在域中靠左輸出
- right =0x0002, //在域中靠右輸出
- internal =0x0004, //符號靠左數(shù)值靠右輸出,中間默認以空格填充
- dec =0x0008, //數(shù)值以十進制輸出
- hex =0x0010, //以16進制輸出
- oct =0x0020, //8進制輸出
- fixed =0x0040, //浮點數(shù)以小數(shù)方式輸出
- scientific =0x0080, //浮點數(shù)以科學計數(shù)方式輸出
- boolalpha =0x0100, //布爾值以true/false方式輸出
- showbase =0x0200, //8進制前面加0做指示符,16進制前面加0x做指示符
- showpoint =0x0400, //不管小數(shù)點和尾部的0是否可省略不寫,都輸出小數(shù)點和0
- showpos =0x0800, //在正數(shù)前面輸出+號
- skipws =0x1000, //不讀入空白字符(空格,制表符\t,回車\r,和換行\(zhòng)n)
- unitbuf =0x2000, //每次寫入數(shù)據(jù)都刷新到相應設備
- uppercase =0x4000, //科學計數(shù)法的"e"和16進制計數(shù)的"x",大寫輸出為"E"和"X"
- adjustfield =left | right | internal, //一般用作對齊方式的屏蔽碼
- basefield =dec | hex | oct, //一般用作數(shù)值進制輸出方式的屏蔽碼
- floatfield =scientific | fixed //一般用作浮點數(shù)輸出方式的屏蔽碼
- };
一般用派生類ios作前綴”ios::”使用以上枚舉值.
Setf函數(shù)的另一個使用原型如下:
Fmtflags setf(fmtflags flag,fmtflags mask)
其中第二個函數(shù)mask為隱碼格式.例如設置adjustfield,basefield和floatfield格式.組成隱碼格式的所有格式會首先被復位,然后用***個參數(shù)flag去設置新格式.
對于setf函數(shù)設置的格式,可用unsetf函數(shù)進行復位.下面是他的原型,參數(shù)mask為所要復位的格式.
Void unsetf(fmtflags mask)
下面程序使用setf/unsetf函數(shù)對內(nèi)建的cout流進行格式設置和復位.
- #include
- using namespace std;
- int main(void)
- {
- //科學計數(shù)方式顯示,大寫E
- cout.setf(ios::scientific | ios::uppercase);
- cout<<2006.5<
- //下面的showpos不起作用,不會顯示出"+"號
- cout.setf(ios::floatfield,ios::fixed | ios::showpos);
- cout<<2006.5<
- //顯示"+"號
- cout.setf(ios::showpos);
- cout<<2006.5<
- return 0;
- }
對于流的其他格式,如輸出的最小寬域、數(shù)值精度以及填充字符的格式設置,可以使用ios_base類提供的width和precision函數(shù),以及ios類提供的fill函數(shù).
Width函數(shù)用newwidth設置新的最小域寬,如果輸出不足以占滿整個域,會補充適當?shù)那皩Э崭窕蛘咔皩?.
Streamsize width(streamsize newwidth)
默認的數(shù)值精度為6位有效數(shù)字,可用precision函數(shù)將參數(shù)newprecision設置為新的精度值,數(shù)值輸出時會按這個精度進行必要的四舍五入.
Streamsize precision(streamsize newprecision)
默認的填充字符為空格字符,可以用fill函數(shù)將參數(shù)fill_char字符設置為填充字符
Char_type fill(char_type fill_char)
下面示例程序對cout流進行了域寬、精度和填充字符等流格式進行了設置。
- #include
- using namespace std;
- int main(void)
- {
- cout.width(20);
- cout<<"hello"<
- cout.precision(4);
- cout<<2009.228<
- cout.precision(5);
- cout<<2009.228<
- cout.precision(7);
- cout<<2009.228<
- cout.width(20);
- cout.fill('*');
- cout<<"baby"<
- return 0;
本文從C++流的概念和輸入輸出格式控制的方法,兩方面簡單的介紹了C++流,也就是我們經(jīng)常說的I/O流。希望能對讀者有所幫助。
【編輯推薦】
- C++之運算符重載,輸入輸出流詳細介紹
- 2.2.3 輸入輸出流
- C++標準輸入輸出應用技巧解析
- 3.2 組合輸入輸出流
本文題目:C++的輸出格式控制技巧分析
轉載來于:http://www.5511xx.com/article/cdshopi.html


咨詢
建站咨詢
