★マニピュレータによる書式設定★


C言語のprintf関数などでは、桁数設定や16進表記などの書式設定が出来ました。

<sample program cpp039-01>

#include <stdio.h>

int main(void)
{
    int num = 123;

    printf("%5d\n", num);  //5桁で表示

    printf("%05d\n", num); //前ゼロを入れる

    printf("%-d\n", num);  //左寄せ表示

    printf("%x\n", num);   //16進表記

    printf("%o\n", num);   //8進表記

    return 0;
}

<実行結果>

  123
00123
123
7b
173
続行するには何かキーを押してください・・・

C++でこのような書式を設定するためには入出力マニピュレータというものを使用します。

マニピュレータを使うには「iomanip」というヘッダファイルをインクルードします。

上のC言語のプログラムと同じものをC++で書いてみます。

<sample program cpp039-02>

#include <iostream>
#include <iomanip>

int main()
{
    int num = 123;

    std::cout << std::setw(5) << num << std::endl;

    std::cout << std::setfill('0') << std::setw(5) << num << std::endl;

    std::cout << std::left << num << std::endl;

    std::cout << std::hex << num << std::endl;

    std::cout << std::oct << num << std::endl;

    return 0;
}

まずは桁数指定ですが、

std::setw(5)

setwで桁数を指定する事で出力ストリームの桁数(幅)を指定出来ます。


次に前ゼロですが、これはちょっとイメージが違います。

std::setfill('0')

setfillで指定した文字で空白箇所を埋める事が出来ます。

当然、別の文字でも大丈夫です。


次に左寄せです。

std::left

簡単ですね。


16進数、8進数は、

std::hex

std::oct

で指定できます。


他にも小数点以下の桁数を指定したり、色々と種類はありますが必要になったら説明しましょう。


次へ

戻る

目次へ