ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

iosクラスのメンバ関数で書式化

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を使うことが多い。