旧FRONTL1NE記事 : C++で桁数指定及び0埋め

2017年5月3日C/C++,Programming,TECHNOLOGY

たとえば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は同一ストリーム内であれば、省略できるっぽい?
ですが、不具合を避けるためにしっかり指定した方がいいでしょう。

 

江添亮のC++入門

江添亮のC++入門

江添 亮
5,500円(03/22 19:26時点)
Amazonの情報を掲載しています
Effective Modern C++ ―C++11/14プログラムを進化させる42項目

Effective Modern C++ ―C++11/14プログラムを進化させる42項目

Scott Meyers
4,180円(03/22 19:26時点)
Amazonの情報を掲載しています
プログラミング言語C++ 第4版

プログラミング言語C++ 第4版

ビャーネ・ストラウストラップ, Bjarne Stroustrup
9,680円(03/22 19:27時点)
Amazonの情報を掲載しています