當前位置:
首頁 > 最新 > C 標準輸入輸出流的控制符

C 標準輸入輸出流的控制符

dec 設置整數的基數為10

hex 設置整數的基數為16

oct 設置整數的基數為8

setbase(n) 設置整數的基數為n(n只能是16,10,8之一)

setfill(c) 設置填充字元c,c可以是字元常量或字元變數

setprecision(n) 設置實數的精度為n位。在以一般十進位小數形式輸出時,n代表有效數字。在以fixed(固定小數位數)形式和scientific(指數)形式輸出時,n為小數位數。

setw(n) 設置欄位寬度為n位。

setiosflags(ios::fixed) 設置浮點數以固定的小數位數顯示。

setiosflags(ios::scientific) 設置浮點數以科學計數法(即指數形式)顯示。

setiosflags(ios::left) 輸出數據左對齊。

setiosflags(ios::right) 輸出數據右對齊。

setiosflags(ios::shipws) 忽略前導的空格。

setiosflags(ios::uppercase) 在以科學計數法輸出E和十六進位輸出字母X時,以大寫表示。

setiosflags(ios::showpos) 輸出正數時,給出「+」號。

resetiosflags 終止已設置的輸出格式狀態,在括弧中應指定內容。

2.用流對象的成員控制輸出格式

流成員函數 與之作用相同的控制符 作用

precision(n) setprecision(n) 設置實數的精度為n位。

width(n) setw(n) 設置欄位寬度為n位。

fill(c) setfill(c) 設置填充字元c。

setf( ) setiosflags( ) 設置輸出格式狀態,括弧中應給出格式狀態,內容與控制符setiosflags括弧中內容相同。

ubsetf( ) resetiosflags( ) 終止已設置的輸出格式狀態。

cout.width(10);

cout.setf(ios::hex);

3.設置格式狀態的格式標誌

格式標誌 作用

ios::left 輸出數據在本域寬範圍內左對齊

ios::right 輸出數據在本域寬範圍內右對齊

ios::internal 數值的符號位在域寬內左對齊,數值右對齊,中間由填充字元填充

ios::dec 設置整數的基數為10

ios::oct 設置整數的基數為8

ios::hex 設置整數的基數為16

ios::showbase 強制輸出整數的基數(八進位以0打頭,十六進位以0x打頭)

ios::showpoint 強制輸出浮點數的小點和尾數0

ios::uppercase 在以科學計數法輸出E和十六進位輸出字母X時,以大寫表示

ios::showpos 輸出正數時,給出「+」號。

ios::scientific 設置浮點數以科學計數法(即指數形式)顯示

ios::fixed 設置浮點數以固定的小數位數顯示

ios::unitbuf 每次輸出後刷新所有流

ios::stdio 每次輸出後清除 stdout,stderr

例子:

#include

using namespace std;

int main()

{

int a=21;

cout.setf(ios::showbase); //設置輸出時的基數符號

cout

cout.unsetf(ios::dec); //終止十進位的格式設置

cout.setf(ios::hex); //設置以十六進位輸出的狀態

cout

cout.unsetf(ios::hex); //終止十六進位的格式設置

cout.setf(ios::oct); //設置以八進位輸出的狀態

cout

cout.unsetf(ios::oct); //終止以八進位的輸出格式設置

char *pt="China"; //pt指向字元串」china」

cout.width(10); //指定域寬為10

cout

cout.width(10); //指定域寬為10

cout.fill( * ); //指定空白處以"* 填充

cout

double pi=22.0/7.0; //計算pi值

cout.setf(ios::scientific);//指定用科學記數法輸出

cout

cout.width(14); //指定域寬為14

cout

cout.unsetf(ios::scientific); //終止科學記數法狀態

cout.setf(ios::fixed); //指定用定點形式輸出

cout.width(12); //指定域寬為12

cout.setf(ios::showpos); //在輸出正數時顯示「+」號

cout.setf(ios::internal); //數符出現在左側

cout.precision(6); //保留6位小數

cout

return 0;

}

輸出:

dec:21 (十進位形式)

hex:Oxl5 (十六進位形式,以0x開頭)

oct:025 (八進位形式,以O開頭)

China (域寬為10)

*****china (域寬為10,空白處以"* 填充)

pi=**3.142857e+00 (指數形式輸出,域寬14,默認6位小數)

****3.142857 (小數形式輸㈩,精度為6,最左側輸出數符「+」)

說明:

1、成員函數width(n)和控制符setw(n)只對其後的第一個輸出項有效。如果要求在輸出數據時都按指定的同一域寬n輸出,不能只調用一次width(n),而必須在輸出每一項前都調用一次width(n)。

2、在表5中的輸出格式狀態分為5組,每一組中同時只能選用一種(例如,dec,hex和oct中只能選一,它們是互相排斥的),在用成員函數serf和控制符setiosflags設置輸出格式狀態後,如果想改設置為同組的另一狀態,應當調用成員函數unsetf(對應於成員函數serf)或resetiosflags(對應於控制符sefiosflags),先終止原來設置的狀態。然後再設置其他狀態。

同理,程序倒數第8行的unsetf函數的調用也是不可缺少的。讀者不妨上機試一試。

3、用serf函數設置格式狀態時,可以包含兩個或多個格式標誌,由於這些格式標誌在lOS類中被定義為枚舉值,每一個格式標誌以一個二進位代表,因此可以用「位或」運算符「I」組合多個格式標誌

4、可以看到:對輸出格式的控制,既可以用控制符(如例2),也可以用cout流的有關成員函數(如例3),二者的作用是相同的。控制符是在頭文件mmamp中定義的,因此用控制符時,必須包含iomanip頭文件。cout流的成員函數是在頭文件iostream中定義的,因此只需包含頭文件iostream,不必包含iomanip。許多程序人員感到使用控制符方便簡單,可以在一個cout輸出語句中連續使用多種控制符。

5、關於輸山格式的控制,在使用中還會遇到一些細節問題,不可能在這裡全部涉及。在遇到問題時,請查閱專門手冊或上機試驗一下即可解決。


點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 maye 的精彩文章:

《實用C》第4課:玩轉 Hello World!
程序員的突發奇想,老闆竟把他炒了,原因是思想太超前

TAG:maye |