LinkedIn にシェア
LINEで送る
Pocket

たとえばC言語でstdio.hを使う場合、printfなどの関数で

#include <stdio.h>

int main(){
    printf("%2d\n", 9);
    printf("%5d\n", 64);
    return 0;
}

こんな感じに書けば結果は

09
00064

といった感じになります。

 

では、これをC++でstdio.hを使用せず、iostreamで書く場合どうすればいいでしょうか?

この場合iomanipを追加でインクルードし、std::setw/setfillを使用することにより実現できます。

#include <iostream>
#include <iomanip>

int main(){
    std::cout << std::setw(2) << std::setfill('0') << 9 << std::endl;
    std::cout << std::setw(5) << std::setfill('0') << 64 << std::endl;
    return 0;
}

こちらの結果も

09
00064

となります。

setwで桁数を指定し、setfillで空白の桁を何で埋めるか指定できます。

 

ちなみにsetfillは同一ストリーム内であれば、省略できるっぽい?
ですが、不具合を避けるためにしっかり指定した方がいいでしょう。