たとえば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は同一ストリーム内であれば、省略できるっぽい?
ですが、不具合を避けるためにしっかり指定した方がいいでしょう。
ビャーネ・ストラウストラップ, Bjarne Stroustrup
9,680円(11/23 17:11時点)
Amazonの情報を掲載しています
コメント