格式控制器、格式旗標(cout)

cout有預設的輸出格式,也可以自行指定格式,像endl就是格式控制器的一種,它會輸出new line字元至串流中,格式控制器只會影響目前正在處理的串流,串流處理結束後即回復成預設的格式,格式控制器也可以指定參數,如果要使用具有參數的格式控制器,必須含入iomanip這個標頭檔案,下面為簡單的使用。

#include <iostream> 
#include <iomanip>
using namespace std;

int main() {
    cout << oct << 30 << endl;    //8進位顯示 
    cout << hex << 30 << endl;    //16進位顯示 
    cout << setw(2) << 5 << endl; //寬度為2
    system("PAUSE");
    return 0;
}

格式控制器可以改變目前的串流格式,如果想要讓所有的串流都維持特定格式,可以使用格式化旗標,使用setf()與unsetf()來設定與取消格式化旗標,下面為簡單的示範。

#include <iostream> 
using namespace std;

int main() {
    cout.unsetf(ios::dec);              
    cout.setf(ios::hex); 
    cout << 120 << endl;
    cout << 50 << endl;

    cout.setf(ios::dec);
    cout.setf(ios::scientific);
    cout << 50.25 << endl;

    system("PAUSE");
    return 0;
}