Skip to content

Commit 89d821a

Browse files
committed
フォーマット書式の表を整理
1 parent c48319e commit 89d821a

File tree

1 file changed

+42
-21
lines changed

1 file changed

+42
-21
lines changed

reference/format/format.md

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ string s3 = format("{} {1}", "a", "b"); // コンパイルエラー
8686
* スペース : 正の数にはスペースを表示する
8787
* `#` : 代替表現(`0x`など形式がわかる表記)を使う
8888
* `0` : 符号を考慮して0で埋める
89-
* `width` : 幅 (省略時は値に応じて幅が決まり、アライメントは機能しない)
89+
* `width` : 幅 (アライメントもしくは0埋めの幅)
9090
* 置換フィールドを使って変数で指定できる
9191
* `precision` : 精度(浮動小数点数の場合)、使う文字数(文字列の場合)
9292
* 置換フィールドを使って変数で指定できる
@@ -100,10 +100,29 @@ string s3 = format("{} {1}", "a", "b"); // コンパイルエラー
100100

101101
| type | 意味 |効果 | 対応バージョン |
102102
|:-----------|:-------------|--------------------------------------------------------------------------------------|-------|
103-
| s (省略可) | 文字列 | 文字列をそのまま出力 | C++20 |
103+
| s | 文字列 | 文字列をそのまま出力 | C++20 |
104104
| ? | デバッグ出力 | 文字・文字列を引用符で囲み、エスケープシーケンスをエスケープして出力 (例:`"\n"``"\"\n\""`となる) | C++23 |
105105

106-
#### 文字型 / `bool`型 / 整数型の場合
106+
デフォルトは `s`
107+
108+
#### 文字型の場合
109+
110+
| type | 意味 | 効果 | 対応バージョン |
111+
|:-------|:---------------------------|:--------------------------------------------------------------------------|----------------|
112+
| c | 文字として出力 | `static_cast<charT>(value)` (収まらないときは`format_error`) | C++20 |
113+
| ? | デバッグ出力 | 文字・文字列を引用符で囲み、エスケープシーケンスをエスケープして出力 (例:`"\n"``"\"\\n\""`となる) | C++23 |
114+
115+
デフォルトは `c`
116+
117+
整数型のオプションも指定できる。その場合は、十分な大きさの符号なし整数型として扱われる。
118+
119+
#### `bool`型の場合
120+
121+
デフォルトでは `true` / `false` という文字列を出力する。
122+
123+
整数型のオプションも指定できる。その場合は、`unsigned char``static_cast` される。
124+
125+
#### 整数型の場合
107126

108127
イテレータ範囲`[first, last)`[`to_chars`](/reference/charconv/to_chars.md)の結果を格納するのに十分な範囲、`value`をフォーマットする値、`charT``char`または`wchar_t`とする。
109128

@@ -112,34 +131,36 @@ string s3 = format("{} {1}", "a", "b"); // コンパイルエラー
112131

113132
| type | 意味 | 効果 | 対応バージョン |
114133
|:-------|:---------------------------|:--------------------------------------------------------------------------|----------------|
115-
| b | 2進数(小文字) | `to_chars(first, last, value, 2)` (代替表現の接頭辞 `0b`) | C++20 |
116-
| B | 2進数(大文字) | `b`の大文字版 (代替表現の接頭辞 `0B`) | C++20 |
117-
| c | 文字として出力 | `static_cast<charT>(value)` (収まらないときは`format_error`) | C++20 |
134+
| b, B | 2進数 | `to_chars(first, last, value, 2)` (代替表現の接頭辞 `0b`) | C++20 |
118135
| d | 10進数 | `to_chars(first, last, value)` | C++20 |
119136
| o | 8進数 | `to_chars(first, last, value, 8)` (代替表現の接頭辞 `0`、ただし値が0のときは接頭辞なし) | C++20 |
120-
| x | 16進数(小文字) | `to_chars(first, last, value, 16)` (代替表現の接頭辞 `0x`) | C++20 |
121-
| X | 16進数(大文字) | `x`の大文字版 (代替表現の接頭辞 `0X`) | C++20 |
122-
| ? | デバッグ出力 | 文字・文字列を引用符で囲み、エスケープシーケンスをエスケープして出力 (例:`"\n"``"\"\\n\""`となる) | C++23 |
123-
| (なし) | デフォルト | `d` (整数型の場合)<br/>`c` (文字型の場合)<br/>`"true"`/`"false"`を出力(`bool`型の場合) | C++20 |
137+
| x, X | 16進数 | `to_chars(first, last, value, 16)` (代替表現の接頭辞 `0x`) | C++20 |
138+
| c | 文字として出力 | `static_cast<charT>(value)` した値を文字として出力 (収まらないときは`format_error`) | C++20 |
139+
140+
デフォルトは `d`
141+
142+
2進数・16進数については、大文字のオプションを指定すると代替表現および数値中のアルファベットが大文字になる。
124143

125144
#### 浮動小数点数型の場合
126145

127-
| type | 意味 | 効果 |
128-
|:-----------|:---------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
129-
| f,F | 指数表記しない | `to_chars(first, last, value, chars_format::fixed, precision)` (精度が指定されたとき)<br/>`to_chars(first, last, value, chars_format::fixed, 6)` (それ以外) |
130-
| e | 指数表記(小文字) | `to_chars(first, last, value, chars_format::scientific, precision)` (精度が指定されたとき)<br/>`to_chars(first, last, value, chars_format::scientific, 6)` (それ以外) |
131-
| E | 指数表記(大文字) | `e`の大文字版 |
132-
| a | 16進指数表記(小文字) | `to_chars(first, last, value, chars_format::hex, precision)` (精度が指定されたとき)<br/>`to_chars(first, last, value, chars_format::hex)` (それ以外) |
133-
| A | 16進指数表記(大文字) | `a`の大文字版 |
134-
| g | 値に応じた表記(小文字) | `to_chars(first, last, value, chars_format::general, precision)` (精度が指定されたとき)<br/>`to_chars(first, last, value, chars_format::general, 6)` (それ以外) |
135-
| G | 値に応じた表記(大文字) | `g`の大文字版 |
136-
| (なし) | デフォルト | `to_chars(first, last, value, chars_format::fixed, general, precision)` (精度が指定されたとき)<br/>`to_chars(first, last, value)` (それ以外) |
146+
| type | 意味 | 効果 |
147+
|:-----------|:--------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
148+
| f, F | 指数表記しない | `to_chars(first, last, value, chars_format::fixed, precision)` (精度が指定されたとき)<br/>`to_chars(first, last, value, chars_format::fixed, 6)` (それ以外) |
149+
| e, E | 指数表記する | `to_chars(first, last, value, chars_format::scientific, precision)` (精度が指定されたとき)<br/>`to_chars(first, last, value, chars_format::scientific, 6)` (それ以外) |
150+
| a, A | 16進数で指数表記する | `to_chars(first, last, value, chars_format::hex, precision)` (精度が指定されたとき)<br/>`to_chars(first, last, value, chars_format::hex)` (それ以外) |
151+
| g, G | 値に応じて指数表記を使う | `to_chars(first, last, value, chars_format::general, precision)` (精度が指定されたとき)<br/>`to_chars(first, last, value, chars_format::general, 6)` (それ以外) |
152+
153+
デフォルトは `g`
154+
155+
大文字のオプションを指定すると数値中のアルファベットが大文字になる。
137156

138157
#### ポインタの場合
139158

140159
| type | 意味 | 効果 |
141160
|:-----------|:-------------------|:----------------------------------------------------------------------------------------------------------------|
142-
| p (省略可) | アドレスを出力する | `"0x" + to_chars(first, last, reinterpret_cast<uintptr_t>(value), 16)` |
161+
| p | アドレスを出力する | `0x` につづいて、`to_chars(first, last, reinterpret_cast<uintptr_t>(value), 16)` の結果を出力する |
162+
163+
デフォルトは `p`
143164

144165
ポインタは`void*`のみサポートする。それ以外のポインタは、`void*`にキャストしなければ出力できない。
145166

0 commit comments

Comments
 (0)