最終更新日時: 2026年05月15日 14時22分58秒 (JST)
Akira Takahashi が更新

履歴 編集

<format>

# format(C++20)

`<format>`ヘッダでは、書式文字列を使って引数をフォーマットする、いわゆる`printf`スタイルのフォーマット関数を提供する。 このフォーマット関数は型安全であり、ユーザー定義型への拡張も可能である。

書式文字列については`format`を参照。

## フォーマット関数

名前 | 説明 | 対応バージョン
--- | --- | ---
`format` | 書式文字列を使って引数をフォーマットした文字列を返す (function template) | C++20
`format_to` | 書式文字列を使って引数をフォーマットし、出力イテレータに出力する (function template) | C++20
`format_to_n` | 書式文字列を使って引数をフォーマットし、指定した文字数を超えないように出力イテレータに出力する (function template) | C++20
`format_to_n_result` | `format_to_n`の結果を表す (class template) | C++20
`formatted_size` | 書式文字列を使って引数をフォーマットした文字列を保存するのに必要な文字数を返す (function template) | C++20
`vformat` | `format`の非テンプレート版 (function) | C++20
`vformat_to` | `format_to`の非テンプレート版 (function) | C++20

## フォーマッター

名前 | 説明 | 対応バージョン
--- | --- | ---
`formattable` | 文字列フォーマット可能 (concept) | C++23
`formatter` | 引数の型に対応する書式文字列の解析、値のフォーマットを担う (class template) | C++20
`enable_nonlocking_formatter_optimization` | `std::print()`と`std::println()`の効率的な実装を有効にする | C++26
`basic_format_parse_context` | 書式文字列の解析のコンテキスト (class template) | C++20
`format_parse_context` | `basic_format_parse_context`のマルチバイト文字列版 (type-alias) | C++20
`wformat_parse_context` | `basic_format_parse_context`のワイド文字列版 (type-alias) | C++20
`basic_format_context` | 引数のフォーマットのコンテキスト (class template) | C++20
`format_context` | `basic_format_context`のマルチバイト文字列版 (type-alias) | C++20
`wformat_context` | `basic_format_context`のワイド文字列版 (type-alias) | C++20
`range_format` | Rangeの書式種別 (enum) | C++23
`format_kind` | 指定したRangeの書式種別を取得する (variable) | C++23
`const-formattable-range` | `const Range`の要素型が文字列フォーマット可能 (concept) | C++23
`fmt-maybe-const` | `formatter::format()`関数のパラメータ型として使用するための(const) Range型を取得 (type-alias) | C++23
`range_formatter` | Rangeに対する書式文字列の解析、値のフォーマットを行う (class template) | C++23
`range-default-formatter` | Rangeに対する共通の書式文字列の解析、値のフォーマットを行う説明専用クラス (class template) | C++23

## 引数

名前 | 説明 | 対応バージョン
--- | --- | ---
`basic_format_arg` | 引数1つへのアクセスを提供する (class template) | C++20
`visit_format_arg` | `basic_format_arg`オブジェクトが現在保持している型に対応する関数を呼び出す (function template) | C++20 C++26から非推奨
`make_format_args` | 可変長引数から`basic_format_arg`の列を構築する (function template) | C++20
`make_wformat_args` | `make_wformat_args`のワイド文字列版 (function template) | C++20
`basic_format_args` | 引数列へのアクセスを提供する (class template) | C++20
`format_args` | `basic_format_args`のマルチバイト文字列版 (type-alias) | C++20
`wformat_args` | `basic_format_args`のワイド文字列版 (type-alias) | C++20

## 書式文字列

名前 | 説明 | 対応バージョン
--- | --- | ---
`basic_format_string` | 書式のコンパイル時文字列クラス (class template) | C++23
`dynamic-format-string` | 説明用としての書式の実行時文字列クラス (class template) | C++26
`dynamic_format` | 書式の実行時文字列を指定するために文字列をラップする (function) | C++26

## 例外

名前 | 説明 | 対応バージョン
--- | --- | ---
`format_error` | フォーマットの失敗を表す例外クラス (class) | C++20

## バージョン

### 言語

- C++20

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 参照

- Working Draft, Standard for Programming Language C++ [format]
- P0645R10 Text Formatting