名前空間
変種
操作

std::vformat_to

From cppreference.com
< cpp‎ | utility‎ | format
 
 
 
 
ヘッダー <format> で定義
template< class OutputIt >
OutputIt vformat_to( OutputIt out, std::string_view fmt, std::format_args args );
(1) (C++20以降)
template< class OutputIt >
OutputIt vformat_to( OutputIt out, std::wstring_view fmt, std::wformat_args args );
(2) (C++20以降)
template< class OutputIt >

OutputIt vformat_to( OutputIt out, const std::locale& loc,

                     std::string_view fmt, std::format_args args );
(3) (C++20以降)
template< class OutputIt >

OutputIt vformat_to( OutputIt out, const std::locale& loc,

                     std::wstring_view fmt, std::wformat_args args );
(4) (C++20以降)

フォーマット文字列fmtに従ってargsで保持されているフォーマット引数をフォーマットし、結果を出力イテレータoutに書き込みます。locが存在する場合は、ロケール固有のフォーマットに使用されます。

CharTdecltype(fmt)::char_type(オーバーロード(1,3)の場合はchar、オーバーロード(2,4)の場合はwchar_t)とします。

これらのオーバーロードは、OutputItがコンセプトstd::output_iterator<const CharT&>を満たす場合にのみオーバーロード解決に参加します。

OutputItはコンセプトstd::output_iterator<const CharT&>をモデル化(意味的要件を満たす)する必要があり、また、引数の型における任意のTiに対してstd::formatter<Ti, CharT>Formatter要件を満たす必要があります。それ以外の場合は、動作は未定義です。

目次

[編集] パラメータ

out - 出力バッファへのイテレータ
fmt - フォーマット文字列を表すオブジェクト。フォーマット文字列は以下で構成される:
  • 通常の文字({} を除く)は、変更されずに出力にコピーされる。
  • エスケープシーケンス {{}} は、それぞれ出力で {} に置き換えられる。
  • 置換フィールド。

各置換フィールドは以下の形式を持つ。

{ arg-id (オプション) } (1)
{ arg-id (オプション) : format-spec } (2)
1) フォーマット指定なしの置換フィールド
2) フォーマット指定ありの置換フィールド
arg-id - フォーマットに使用する args 内の引数のインデックスを指定する。省略された場合、引数は順番に使用される。

フォーマット文字列内の arg-id は、すべて存在するか、すべて省略されなければならない。手動と自動のインデックス付けを混在させることはエラーである。

format-spec - 対応する引数に対する std::formatter 特殊化によって定義されるフォーマット指定。} で開始することはできない。

(C++23から)
(C++26以降)
  • その他のフォーマット可能な型の場合、フォーマット指定はユーザー定義の formatter 特殊化によって決定される。
args - フォーマットする引数
loc - ロケール固有のフォーマットに使用される std::locale

[編集] 戻り値

出力範囲の終端の次のイテレータ。

[編集] 例外

fmtが提供された引数に対して有効なフォーマット文字列でない場合、std::format_errorを送出します。また、フォーマッタまたはイテレータ操作によって送出された例外を伝播します。

[編集]

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
P2216R3 C++20 argsの型はOutputItでパラメータ化されています。 パラメータ化されていません。

[編集] 関連項目

English 日本語 中文(简体) 中文(繁體)