4

私の質問は簡単です。printf を使用して、指定された量の先行ゼロを含む整数を出力したいと考えています。ただし、先頭のゼロの数は実行時に決定され、先験的にはわかりません。どうすればそれができますか?

文字数(5としましょう)がわかっていれば、

printf("%05d", number);

でも5になるかどうかはわかりません。

4

5 に答える 5

10

次を使用して幅を渡すことができます*

printf("%0*d", 5, number);
于 2012-05-08T10:44:21.730 に答える
5

使用することもできます

cout << setw(width_) << setfill('0') << integerVariable_;

wherewidth_は実行時に決定されます。

于 2012-05-08T10:47:01.993 に答える
2

アスタリスクを使用して、ほとんどのプラットフォームでこれを実現できると思います。

int width = whatever();
printf("%0*d", width, number );
于 2012-05-08T10:48:05.143 に答える
2

ここでの標準的な解決策は次のようになりprintf("%.*d", precision, number)ます。ファミリではprintf、C では、精度の書式設定フィールドが表示される最小桁数を指定します。デフォルトは 1 です。これは幅とは無関係であるため、次のように記述できます。

printf("%6.3d", 12);    // outputs "   012"
printf("%6.0d",  0);    // outputs "      ", without any 0

幅または精度のいずれか (または両方) について、 を指定できます'*'。これによりprintf、引数から値が取得されます ( を渡します int)。

printf("%6.*d", 3, 12); // outputs "   012"
printf("%*.3d", 6, 12); // outputs "   012"
printf("%*.*d", 6, 3, 12);  // outputs "   012"

残念ながら、 には同等の機能がありませんostream。整数を出力する場合、精度は無視されます。(これはおそらく、精度のタイプに依存するデフォルトがないためです。デフォルトは 6 であり、それを尊重するすべてのタイプに適用されます。)

于 2012-05-08T11:06:56.650 に答える
-1

C++ setw および setfill で利用可能なマニピュレータを使用します。

于 2012-05-08T11:00:30.817 に答える