/*
設定輸出字元的寬度
width(int)是iostream類的成員函式,可以通過cout物件來呼叫,即cout.width(int)
注:1.width(int)只影響將要顯示的乙個物件,之後字段寬度會自動恢復為預設值
2.如果設定的字段寬度小於要輸出的字元的寬度,則字元全部輸出
3.如果設定的字段寬度大於要輸出的字元的寬度,則字元右對齊輸出,多餘部分用空格填充
設定填充字段
cout.fill(char)可以設定填充字段
注:fill(char)會一直生效,直至重新設定
設定浮點數的顯示精度
cout.precision(int)可以設定浮點數的顯示精度(不包括小數點)
注:1.如果設定的精度大於浮點數的位數,如果浮點數能根據ieee754精確表示,則補零;如果浮點數不能精確表示,則盡量接近
2.如果設定的精度小於浮點數的位數,採用科學計數法表示
3.precision(int)單獨使用,表示設定有效位數;與fixed或者scientific連用,表示設定小數字的精度
4.precision(int)會一直生效
setf()函式
setf()函式原型如下:
fmtflags setf(fmtflags)
fmtflags setf(fmtflags,fmtflags)
先看第乙個原型。
其中fmtflags是一種標誌型別,或者說標誌位。
ios_base類的保護資料成員是乙個15位的二進位制數字,或者說是15個標誌位,這15個標誌位與ios類的15個列舉型常量一一對應,對應關係如下:
boolalpha fixed scientific hex oct dec internal right left showpos showpoint showbase
0 0 0 0 0 1 0 0 0 0 0 0
uppercase unitbuf skipws
0 0 1
即ios類的15個列舉型常量與ios_base類的15位二進位制數字000 0010 0000 0001一一對應。另外,可以看到,二進位制數字的15位除了skipws和dec對應的位數預設為1之外,其他均預設為0 (注:上表是vc++的對應關係)
15個標誌的含義如下所示:
ios::boolalpha bool型數值的輸入和輸出使用文字形式(即true或false)
ios::fixed 定點格式輸出,即以小數點的形式表示浮點數
ios::scientific 用科學記數法表示浮點數
ios::hex 採用十六進製制
ios::oct 採用八進位制
ios::dec 採用十進位制
ios::internal 輸出格式為居中對齊
ios::right 輸出格式為右對齊
ios::left 輸出格式為左對齊
ios::showpos 在正數前面加上+號
ios::showpoint 顯示末尾的0和小數點
ios::showbase 顯示進製,即在十六進製制數前新增0x,在八進位制數前新增0
ios::uppercase 大寫顯示
ios::unitbuf 每次執行輸出操作後均會清空緩衝區
ios::skipws 忽略輸入流中的空白字元,即當我們輸入的字元前面有空格時,儲存的時候會自動忽略
注:1.設定多個標誌位用"|"隔開
2.預設對齊方式為右對齊
3.setf(ios::showpoint)與precision連用時,會輸出小數點(單獨的precision不會輸出小數點)
4.ios::internal輸出格式為居中對齊,其中符號左對齊,值右對齊;如果是十六進製制,則字首0x左對齊
5.ios::uppercase只對十六進製製起作用,即將0x變為0x
6.ios::fixed或ios::scientific與ios::presicion連用表示的是小數字數,而不是有效位數
7.以上15個列舉型常量稱之為標準控制符
下面看setf()的第二種原型,即:
fmtflags setf(fmtflags,fmtflags)
其中第乙個引數是要開啟的標誌位,第二個引數是要清除的標誌位,標誌位的清除通過指示標誌位來實現
指示標誌位共有三個,如下:
其實現原理是15個標誌位中只有要清除的標誌位為1,其餘位為0,然後取反後與15個標誌位進行與操作
另外,指示標誌位也是ios類從ios_base類中繼承而來,因此ios::adjustfield等效於ios_base::adjustfield
注:清除多個標誌位用"|"隔開
清除標誌位
unsetf()函式可以實現標誌位的清除
注:unsetf()實現原理同指示標誌位是一樣的,都是15個標誌位中只有要清除的標誌位為1,其餘位為0,然後取反後與15個標誌位進行與操作
*/
#include usingnamespace
std;
intmain()
C 輸出格式控制符
net有兩種格式控制符,一種是標準格式控制符,另一種是使用者自定義的。標準格式的一般形式 n表示佔位符的序號,0對應第乙個變數,1對應第2個變數,依此類推。m 是可選項,m表示輸出的變數在控制台中所佔據的字元個數。yn 是可選項。y是格式化說明符,n為正整數,代表定義資料的精度範圍。1 貨幣金額格式...
C C 輸出格式控制符
c c 格式控制符 一 型別 型別字元用以表示輸出資料的型別,其格式符和意義如下表所示 格式字元意義d 以十進位制形式輸出帶符號整數 正數不輸出符號 o以八進位制形式輸出無符號整數 不輸出字首0 x,x以十六進製制形式輸出無符號整數 不輸出字首ox u以十進位制形式輸出無符號整數 f以小數形式輸出單...
C 中cout格式化輸出的相關函式與控制符
ostream operator type char name 10 hello char p name cout hello cout void p 輸出p所指向的字串的位址 cout p 輸出h字元cout.put w put t 輸出w和t,可以拼接 cout.put 65 put 65.5 ...