偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

C++的輸出格式控制技巧分析

開發(fā) 后端
C++中的輸入輸出格式是由輸入輸出流和重載格式控制符決定的。下面主要介紹輸入輸出流及一些常用的語句。

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

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

fmtflage setf(fmtfalg flag)

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

 

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

 

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

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

Fmtflags setf(fmtflags flag,fmtflags mask)

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

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

Void unsetf(fmtflags mask)

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

 

  1. #include  
  2. using namespace std;  
  3. int main(void)  
  4. {  
  5. //科學(xué)計(jì)數(shù)方式顯示,大寫E  
  6. cout.setf(ios::scientific | ios::uppercase);  
  7. cout<<2006.5<  
  8. //下面的showpos不起作用,不會(huì)顯示出"+"號(hào)  
  9. cout.setf(ios::floatfield,ios::fixed | ios::showpos);  
  10. cout<<2006.5<  
  11. //顯示"+"號(hào)  
  12. cout.setf(ios::showpos);  
  13. cout<<2006.5<  
  14. return 0;  
  15. }  
  16.  

 

對(duì)于流的其他格式,如輸出的最小寬域、數(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è)置。

 

  1. #include  
  2. using namespace std;  
  3. int main(void)  
  4. {  
  5. cout.width(20);  
  6. cout<<"hello"<  
  7. cout.precision(4);  
  8. cout<<2009.228<  
  9. cout.precision(5);  
  10. cout<<2009.228<  
  11. cout.precision(7);  
  12. cout<<2009.228<  
  13. cout.width(20);  
  14. cout.fill('*');  
  15. cout<<"baby"<  
  16. return 0; 

 

本文從C++流的概念和輸入輸出格式控制的方法,兩方面簡單的介紹了C++流,也就是我們經(jīng)常說的I/O流。希望能對(duì)讀者有所幫助。

【編輯推薦】

  1. C++之運(yùn)算符重載,輸入輸出流詳細(xì)介紹
  2. 2.2.3 輸入輸出流
  3. C++標(biāo)準(zhǔn)輸入輸出應(yīng)用技巧解析
  4. 3.2 組合輸入輸出流
責(zé)任編輯:于鐵 來源: 中國IT實(shí)驗(yàn)室
相關(guān)推薦

2021-11-29 14:47:54

C++編程語言

2010-02-06 13:52:39

C++ profile

2013-07-29 04:37:53

iOS開發(fā)iOS開發(fā)學(xué)習(xí)NSLog輸出格式

2010-02-06 14:28:38

C++標(biāo)準(zhǔn)輸入輸出

2011-05-30 15:29:32

C++

2010-02-03 15:35:00

C++輸入輸出漢字

2010-01-28 13:27:12

C++類定義

2010-01-11 10:28:51

C++編程

2011-07-10 15:26:54

C++

2010-01-22 16:35:41

C++開發(fā)

2010-01-26 17:11:13

C++編程

2010-01-18 10:16:58

學(xué)習(xí)C++

2011-07-13 16:36:11

C++

2010-02-01 11:13:00

C++ Traits

2010-01-12 10:40:22

C++程序員

2010-01-22 15:53:55

C++轉(zhuǎn)換

2010-02-01 15:01:34

C++拋出異常

2010-01-12 10:11:36

學(xué)習(xí)C++語言

2024-08-16 14:15:00

AI訓(xùn)練

2011-05-31 18:31:13

C++
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)