私の質問は簡単です。私はprintfを使って、指定された量の先行ゼロで整数を出力したい。ただし、先行ゼロの数は実行時に決定され、先験的には分かりません。どうすればいい?C++でパラメータ化された先行ゼロprintf関数
私は文字の数を知っていたならば、それは
printf("%05d", number);
だろう(のは5としましょう)しかし、それは5
私の質問は簡単です。私はprintfを使って、指定された量の先行ゼロで整数を出力したい。ただし、先行ゼロの数は実行時に決定され、先験的には分かりません。どうすればいい?C++でパラメータ化された先行ゼロprintf関数
私は文字の数を知っていたならば、それは
printf("%05d", number);
だろう(のは5としましょう)しかし、それは5
になります場合、私はあなたが*
を使用して幅を渡すことができます知っていません:
printf("%0*d", 5, number);
使用することもでき
cout << setw(width_) << setfill('0') << integerVariable_;
width_
は実行時に決定されます。
ありがとう、それはうまくいくでしょうが、私の場合はprintfを使う必要がありました。とにかくありがとう! – Chicoscience
私は、大部分のプラットフォームでこれを達成するためにアスタリスクを使用することができます。
int width = whatever();
printf("%0*d", width, number);
C++ setwとsetfillで使用可能なマニピュレータを使用します。
標準溶液は、printf("%.*d", precision, number)
です。
printf("%6.3d", 12); // outputs " 012"
printf("%6.0d", 0); // outputs " ", without any 0
:printf
家族で は、Cで、高精度の書式設定のフィールドには、のようなものを書くことができますので、これは、幅の独立した である1をデフォルト、表示される数字の 最小数を指定します
printf("%6.*d", 3, 12); // outputs " 012"
printf("%*.3d", 6, 12); // outputs " 012"
printf("%*.*d", 6, 3, 12); // outputs " 012"
:幅または精度(あるいはその両方)のいずれかについて、あなたは
printf
は、引数(
int
を渡す)から値を拾うようになりますどの
'*'
、 を指定することができます
残念なことに、ostream
に同等の機能はありません。 の精度は整数を出力するときに無視されます。 ( は精度に型依存の既定値がないためです。 の既定値は6で、それを尊重するすべての型に適用されます)。
あなたの例では、精度精度の前には ''。 ''が必要です。 'printf("%。* d "、5、number)'です。 –
シンプルで完璧 – Chicoscience
@JamesKanzeそう、間違いを修正しました。 –