一、格式控制
ios提供直接設置標志字的控制格式函數
iostream和iomanip庫還提供了一批控制符簡化I/O格式化操作
1 狀態標志 值 含義 輸入/輸出 2 skipws 0X0001 跳過輸入中的空白 I 3 left 0X0002 左對齊輸出 O 4 right 0X0004 右對齊輸出 O 5 internal 0X0008 在符號位和基指示符后填入字符 O 6 dec 0X0010 轉換基制為十進制 I/O 7 oct 0X0020 轉換基制為八進制 I/O 8 hex 0X0040 轉換基制為十六進制 I/O 9 showbase 0X0080 在輸出中顯示基指示符 O 10 showpoint 0X0100 輸出時顯示小數點 O 11 uppercase 0X0200 十六進制輸出時一律用大寫字母 O 12 showpos 0X0400 正整數前加“+”號 O 13 scientific 0X0800 科學示數法顯示浮點數 O 14 fixed 0X1000 定點形式顯示浮點數 O 15 unitbuf 0X2000 輸出操作后立即刷新流 O 16 stdio 0X4000 輸出操作后刷新stdout 和 stdree O
設置標識字:

例1:
1 //例10-4 設置輸出寬度 2 #include <iostream.h> 3 void main() 4 { char *s = "Hello"; 5 cout.fill( '*' ) ; // 置填充符 6 cout.width( 10 ) ; // 置輸出寬度 7 cout.setf( ios :: left ) ; // 左對齊 8 cout << s << endl ; 9 cout.width( 15 ) ; // 置輸出寬度 10 cout.setf( ios :: right, ios :: left ) ; // 清除左對齊標志位,置右對齊 11 cout << s << endl ; 12 }
輸出:

例二:不同基數形式的輸入輸出
1 #include <iostream.h> 2 void main() 3 { int a , b , c ; 4 cout << "please input a in decimal: " ; 5 cin.setf( ios :: dec , ios :: basefield ) ; cin >> a ; //十進制輸入 6 cout << "please input b in hexadecimal: " ; 7 cin.setf( ios :: hex , ios :: basefield ) ; cin >> b ; //十六進制輸入 8 cout << "please input c in octal: " ; 9 cin.setf( ios :: oct , ios :: basefield ) ; cin >> c ; //八進制輸入 10 cout << "Output in decimal :\n" ; 11 cout.setf( ios :: dec, ios :: basefield ); //十進制輸出 12 cout << "a = " << a << " b = " << b << " c = " << c << endl ; 13 cout.setf( ios :: hex , ios :: basefield ) ; //十六進制輸出 14 cout << "Output in hexadecimal :\n" ; 15 cout << "a = " << a << " b = " << b << " c = " << c << endl ; 16 cout.setf( ios :: oct , ios :: basefield ) ; //八進制輸出 17 cout << "Output in octal :\n" ; 18 cout << "a = " << a << " b = " << b << " c = " << c << endl ; 19 }
輸出:

例三:格式化輸出浮點數
1 #include <iostream.h> 2 void main() 3 { double x = 22.0/7 ; 4 int i ; 5 cout << "output in fixed :\n" ; 6 cout.setf( ios::fixed | ios::showpos ) ; // 定點輸出,顯示 + 7 for( i=1; i<=5; i++ ) 8 { cout.precision( i ) ; cout << x << endl ; } 9 cout << "output in scientific :\n" ; 10 // 清除原有設置,科學示數法輸出 11 cout.setf(ios::scientific, ios::fixed|ios::showpos ) ; 12 for( i=1; i<=5; i++ ) 13 { cout.precision(i) ; cout << x*1e5 << endl ; } 14 }

二、格式控制符
控制符是istream和ostream類定義了一批函數,作為重載插入運算符<<或提取運算符>>的右操作數控制I/O格式。


例1:
1 // 整數的格式化輸出 2 #include <iostream> 3 #include <iomanip> 4 using namespace std ; 5 void main() 6 { const int k = 618 ; 7 cout << setw(10) << setfill('#') << setiosflags(ios::right) << k <<endl ; 8 cout << setw(10) << setbase(8) << setfill('*') 9 << resetiosflags(ios::right) << setiosflags(ios::left) << k << endl ; 10 }
輸出:

