1. 字元輸出
//重新整理緩沖區 Linux下有效
cout.flush()
//向緩沖區寫字元
cout.put()
//從buffer中寫num個位元組到目前輸出流中。
cout.write()
//cout.flush 重新整理緩沖區,linux下有效
void test01(){
cout << "hello world";
//重新整理緩沖區
cout.flush();
}
//cout.put 輸出一個字元
void test02(){
cout.put('a');
//鍊式程式設計
cout.put('h').put('e').put('l');
}
//cout.write 輸出字元串 buf,輸出多少個
void test03(){
//char* str = "hello world!";
//cout.write(str, strlen(str));
char* str = "*************";
for (int i = 1; i <= strlen(str); i ++){
cout.write(str, i);
cout << endl;
}
for (int i = strlen(str); i > 0; i --){
cout.write(str, i);
cout << endl;
}
}
2. 格式化輸出
在輸出資料時,為簡便起見,往往不指定輸出的格式,由系統根據資料的類型采取預設的格式,但有時希望資料按指定的格式輸出,如要求以十六進制或八進制形式輸出一個整數,對輸出的小數隻保留兩位小數等。有兩種方法可以達到此目的。
- 使用控制符的方法;
- 使用流對象的有關成員函數。
2.1 使用流對象的有關成員函數
通過調用流對象cout中用于控制輸出格式的成員函數來控制輸出格式。用于控制輸出格式的常用的成員函數如下:

流成員函數setf和控制符setiosflags括号中的參數表示格式狀态,它是通過格式标志來指定的。格式标志在類ios中被定義為枚舉值。是以在引用這些格式标志時要在前面加上類名ios和域運算符“::”。格式标志見表13.5。
2.2 控制符格式化輸出
C++提供了在輸入輸出流中使用的控制符(有的書中稱為操縱符)。
//通過流成員函數
void test01(){
int number = 99;
cout.width(20);
cout.fill('*');
cout.setf(ios::left);
cout.unsetf(ios::dec); //解除安裝十進制
cout.setf(ios::hex);
cout.setf(ios::showbase);
cout.unsetf(ios::hex);
cout.setf(ios::oct);
cout << number << endl;
}
//使用控制符
void test02(){
int number = 99;
cout << setw(20)
<< setfill('~')
<< setiosflags(ios::showbase)
<< setiosflags(ios::left)
<< hex
<< number
<< endl;
}
2.3 對程式的幾點說明
- 成員函數width(n)和控制符setw(n)隻對其後的第一個輸出項有效。如:
cout. width(6);
cout <<20 <<3.14<<endl;
輸出結果為 203.14
在輸出第一個輸出項20時,域寬為6,是以在20前面有4個空格,在輸出3.14時,width (6)已不起作用,此時按系統預設的域寬輸出(按資料實際長度輸出)。如果要求在輸出資料時都按指定的同一域寬n輸出,不能隻調用一次width(n), 而必須在輸出每一項前都調用一次width(n>,上面的程式中就是這樣做的。
cout.setf(ios::internal I ios::showpos); //包含兩個狀态标志,用"|"組合