マニピュレータ (C++をもう一度)
[履歴] (2014/12/15 04:34:32)
最近の投稿
注目の記事

サンプルコード

#include <iostream>
#include <iomanip> // 各種マニピュレータを使用可能にするため
using namespace std;

ostream& myhex(ostream& ostr) {
    return ostr << setw(2) << setfill('0') << hex << uppercase;
}

int main() {
    char ch = 'A';

    // マニピュレータには効果が永続するものが含まれます
    ios::fmtflags flags = cout.flags(); // 現在の設定を保存しておきましょう
    char fill = cout.fill(); // fillの値だけはflagsで取得できないため別途保存します

    // 各種マニピュレータで設定を変更
    cout << setw(2) // 出力の最小桁数
         << setfill('0') // 最小桁数に満たない場合に埋める文字
         << hex // 数値は16進数で表示
         << uppercase // 16進数のA-Fを大文字で表示
         << (int)(unsigned char)ch //=> 41
         << endl; // 改行してフラッシュ (書き出す)  ←実はendlもマニピュレータ

    // としても同じです
    cout << myhex << (int)(unsigned char)ch << endl; //=> 41

    // 設定値を戻す
    cout << setiosflags(flags) << setfill(fill);
    // cout.flags(flags);
    // cout.fill(fill); // としても同じです

    return 0;
}
関連ページ