coutといったストリームでは書式化するためのメンバ関数や書式フラグが用意されている。
書式フラグを設定する関数はsetf()。解除する関数はunsetf()。フラグはfmtflagsという列挙型。他にもフィールド幅を設定するwidth()といったものある。
#include <iostream> using namespace std; void main() { ios::fmtflags f; cout.setf(ios::showpos); // showposは正の値にプラスを付けて表示 cout << 123 << endl; cout.unsetf(ios::showpos); cout << 123 << endl; f = cout.flags(); cout << f << endl; cout.width(10); // フィールド幅を設定 cout << 123 << endl; } 実行結果 +123 123 513 123
他にもいろいろなものが用意されており、いろんな書式で出力することができる。
私はこれらの関数やフラグをほとんど知らなかった。そもそもストリーム自体をあんまり使うことがない。文字列の出力にはprintfを使うことが多い。