C++的輸出格式控制技巧是什么

本篇內(nèi)容主要講解“C++的輸出格式控制技巧是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“C++的輸出格式控制技巧是什么”吧!

成都創(chuàng)新互聯(lián)公司網(wǎng)站設(shè)計(jì),為客戶量身定制各類網(wǎng)站建設(shè)業(yè)務(wù),包括企業(yè)型、電子商務(wù)型、自適應(yīng)網(wǎng)站建設(shè)、行業(yè)門戶型等各類網(wǎng)站,實(shí)戰(zhàn)經(jīng)驗(yàn)豐富,成功案例眾多。以客戶利益為出發(fā)點(diǎn),成都創(chuàng)新互聯(lián)公司網(wǎng)站制作為客戶規(guī)劃、按需定制符合企業(yè)需求、帶有營銷價(jià)值的網(wǎng)絡(luò)建站方案認(rèn)真對待每一個(gè)客戶,我們不用口頭的語言來吹擂我們的優(yōu)秀,上千余家的成功案例見證著我們的成長。

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

大部分流的輸入輸出格式可以用setf函數(shù)來設(shè)置。該函數(shù)有兩種重載形式。其但參數(shù)的setf原型為:

fmtflage setf(fmtfalg flag)

參數(shù)flag說明所要設(shè)置的格式,由ios_base給出,可取如下枚舉常量:

enum{  left =0x0001, //在域中靠左輸出  right =0x0002, //在域中靠右輸出  internal =0x0004, //符號(hào)靠左數(shù)值靠右輸出,中間默認(rèn)以空格填充  dec =0x0008, //數(shù)值以十進(jìn)制輸出  hex =0x0010, //以16進(jìn)制輸出  oct =0x0020, //8進(jìn)制輸出  fixed =0x0040, //浮點(diǎn)數(shù)以小數(shù)方式輸出  scientific =0x0080, //浮點(diǎn)數(shù)以科學(xué)計(jì)數(shù)方式輸出  boolalpha =0x0100, //布爾值以true/false方式輸出  showbase =0x0200, //8進(jìn)制前面加0做指示符,16進(jìn)制前面加0x做指示符  showpoint =0x0400, //不管小數(shù)點(diǎn)和尾部的0是否可省略不寫,都輸出小數(shù)點(diǎn)和0  showpos =0x0800, //在正數(shù)前面輸出+號(hào)  skipws =0x1000, //不讀入空白字符(空格,制表符\t,回車\r,和換行\(zhòng)n)  unitbuf =0x2000, //每次寫入數(shù)據(jù)都刷新到相應(yīng)設(shè)備  uppercase =0x4000, //科學(xué)計(jì)數(shù)法的"e"和16進(jìn)制計(jì)數(shù)的"x",大寫輸出為"E"和"X"  adjustfield =left | right | internal, //一般用作對齊方式的屏蔽碼  basefield =dec | hex | oct, //一般用作數(shù)值進(jìn)制輸出方式的屏蔽碼  floatfield =scientific | fixed //一般用作浮點(diǎn)數(shù)輸出方式的屏蔽碼  };

一般用派生類ios作前綴”ios::”使用以上枚舉值.

Setf函數(shù)的另一個(gè)使用原型如下:

Fmtflags setf(fmtflags flag,fmtflags mask)

其中第二個(gè)函數(shù)mask為隱碼格式.例如設(shè)置adjustfield,basefield和floatfield格式.組成隱碼格式的所有格式會(huì)首先被復(fù)位,然后用***個(gè)參數(shù)flag去設(shè)置新格式.

對于setf函數(shù)設(shè)置的格式,可用unsetf函數(shù)進(jìn)行復(fù)位.下面是他的原型,參數(shù)mask為所要復(fù)位的格式.

Void unsetf(fmtflags mask)

下面程序使用setf/unsetf函數(shù)對內(nèi)建的cout流進(jìn)行格式設(shè)置和復(fù)位.

#include  using namespace std;  int main(void)  {  //科學(xué)計(jì)數(shù)方式顯示,大寫E  cout.setf(ios::scientific | ios::uppercase);  cout<<2006.5<  //下面的showpos不起作用,不會(huì)顯示出"+"號(hào)  cout.setf(ios::floatfield,ios::fixed | ios::showpos);  cout<<2006.5<  //顯示"+"號(hào)  cout.setf(ios::showpos);  cout<<2006.5<  return 0;  }

對于流的其他格式,如輸出的最小寬域、數(shù)值精度以及填充字符的格式設(shè)置,可以使用ios_base類提供的width和precision函數(shù),以及ios類提供的fill函數(shù).

Width函數(shù)用newwidth設(shè)置新的最小域?qū)?如果輸出不足以占滿整個(gè)域,會(huì)補(bǔ)充適當(dāng)?shù)那皩?dǎo)空格或者前導(dǎo)0.

Streamsize width(streamsize newwidth)

默認(rèn)的數(shù)值精度為6位有效數(shù)字,可用precision函數(shù)將參數(shù)newprecision設(shè)置為新的精度值,數(shù)值輸出時(shí)會(huì)按這個(gè)精度進(jìn)行必要的四舍五入.

Streamsize precision(streamsize newprecision)

默認(rèn)的填充字符為空格字符,可以用fill函數(shù)將參數(shù)fill_char字符設(shè)置為填充字符

Char_type fill(char_type fill_char)

下面示例程序?qū)out流進(jìn)行了域?qū)?、精度和填充字符等流格式進(jìn)行了設(shè)置。

#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++的輸出格式控制技巧是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

新聞名稱:C++的輸出格式控制技巧是什么
本文網(wǎng)址:http://muchs.cn/article42/johjhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)微信小程序、小程序開發(fā)營銷型網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司