Namespaces
Variants

std:: basic_format_string, std:: format_string, std:: wformat_string

From cppreference.net
定義済みヘッダー <format>
template < class CharT, class ... Args >
struct basic_format_string ;
(1) (C++20以降)
template < class ... Args >

using format_string =

basic_format_string < char , std:: type_identity_t < Args > ... > ;
(2) (C++20以降)
template < class ... Args >

using wformat_string =

basic_format_string < wchar_t , std:: type_identity_t < Args > ... > ;
(3) (C++20以降)

クラステンプレート std::basic_format_string は、フォーマット関数によって使用される std::basic_string_view をラップします。

std::basic_format_string のコンストラクタは、コンパイル時のフォーマット文字列チェックを実行します コンストラクタ引数が std::runtime_format によって返されたものでない限り (C++26以降)

目次

メンバー関数

(constructor)
basic_format_stringを構築する(引数がフォーマット文字列でない場合はコンパイルエラーを発生させる)
(public member function)
get
ラップされた文字列を返す
(public member function)

std::basic_format_string:: basic_format_string

template < class T >
consteval basic_format_string ( const T & s ) ;
(1)
basic_format_string ( /* runtime-format-string */ < CharT > s ) noexcept ;
(2) (C++26以降)
1) string s のビューを格納する basic_format_string オブジェクトを構築する。引数がコンパイル時定数でない場合、または書式化引数型 Args に対する書式文字列として解析できない場合、構築は不適格となる。
このオーバーロードは、 const T & std:: convertible_to < std:: basic_string_view < CharT >> をモデルとする場合にのみ、オーバーロード解決に参加します。
2) basic_format_string オブジェクトを構築します。このオブジェクトは std::runtime_format によって返される文字列 s のビューを格納します。構築時にはフォーマット文字列のチェックは行われません。

パラメータ

s - フォーマット文字列を表すオブジェクト。フォーマット文字列は以下から構成される:
  • 通常の文字( { および } を除く)。これらは変更されずに出力にコピーされる
  • エスケープシーケンス { { および } } 。これらは出力でそれぞれ { および } に置き換えられる
  • 置換フィールド

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

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

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

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

(C++23以降)
(C++26以降)
  • その他のフォーマット可能な型の場合、フォーマット指定はユーザー定義の formatter 特殊化によって決定される。

std::basic_format_string:: get

constexpr std:: basic_string_view < CharT > get ( ) const noexcept ;

格納されている文字列ビューを返します。

注記

エイリアステンプレート format_string および wformat_string std::type_identity_t を使用してテンプレート引数の推論を抑制します。通常、これらが関数パラメータとして現れる場合、それらのテンプレート引数は他の関数引数から推論されます。

template<class... Args>
std::string format(std::format_string<Args...> fmt, Args&&... args);
auto s = format("{} {}", 1.0, 2);
// format<double, int> を呼び出す。Args は 1.0, 2 から推論される
// format_string での type_identity_t の使用により、テンプレート引数推論は
// フォーマット文字列の型を考慮しない

欠陥報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
P2508R1 C++20 この機能に対するユーザー可視名が存在しない 名前 basic_format_string が公開される