C++の出力演算子で先頭のゼロを表示しますか?
2023-09-24 01:52:41
質問
C++で出力をフォーマットするにはどうしたらよいでしょうか。言い換えれば、C++で
printf
のようなものです。
printf("%05d", zipCode);
を使えばいいのは分かっているのですが
printf
を使うこともできますが、私は出力演算子の
<<
.
を使うだけでしょうか?
std::cout << "ZIP code: " << sprintf("%05d", zipCode) << std::endl;
どのように解決するのですか?
これは、少なくとも非負の数については、トリックを行います。 (a) のような、郵便番号のような (b) のようなものです。
#include <iostream>
#include <iomanip>
using namespace std;
cout << setw(5) << setfill('0') << zipCode << endl;
// or use this if you don't like 'using namespace std;'
std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;
パディングを制御するIOマニピュレータとして代表的なものは
-
std::setw(width)
は、フィールドの幅を設定します。 -
std::setfill(fillchar)
は塗りつぶし文字を設定します。 -
std::setiosflags(align)
は整列を設定します。整列はios::leftまたはios::rightです。
そして、あなたの好みに合わせて
<<
を使いたいのであれば、私は強く
fmt
ライブラリに目を向けることを強くお勧めします (
https://github.com/fmtlib/fmt
). これは私たちのツールキットに追加された、フォーマットするための素晴らしいもので、大量の長さのストリームパイプラインよりもずっと素晴らしく、次のようなことが可能になります。
cout << fmt::format("{:05d}", zipCode);
そして、これは現在 LEWG によって C++20 に向けてターゲットにされており、その時点で言語の基本部分となることを期待しています (あるいは、完全に忍び込まない場合はほぼ確実に後でそうなります)。
(a)
もし、あなたが
する
が負の数を扱う必要がある場合は
std::internal
を以下のように使用します。
cout << internal << setw(5) << setfill('0') << zipCode << endl;
これは、塗りつぶし文字 の間に という記号と大きさの間に配置します。
(b) これ ("all ZIP codes are non-negative") は私の側での仮定ですが、それなりに安全な仮定であることは保証します :-)
関連
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み] JavaScriptでカンマを桁区切りにして数値を表示する方法
-
[解決済み] 整数の左側にゼロを埋め込むにはどうしたらいいですか?
-
[解決済み] C++11の'typedef'と'using'の違いは何ですか?
-
[解決済み] C++テンプレート関数定義の.CPPファイルへの格納
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】JavaでのSprintfの等価性
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】Enterキーを押して続行する
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件
-
[解決済み] sprintfのようなstd::stringの書式設定