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 |
で指定できます。
他にも小数点以下の桁数を指定したり、色々と種類はありますが必要になったら説明しましょう。