名前空間
変種
操作

std::vformat

From cppreference.com
< cpp‎ | utility‎ | format
 
 
 
 
ヘッダー <format> で定義
(1) (C++20以降)
(2) (C++20以降)
std::string vformat( const std::locale& loc,
                     std::string_view fmt, std::format_args args );
(3) (C++20以降)
std::wstring vformat( const std::locale& loc,
                      std::wstring_view fmt, std::wformat_args args );
(4) (C++20以降)

args に保持されているフォーマット引数を、フォーマット文字列 fmt に従ってフォーマットし、結果を文字列として返します。指定されている場合、loc はロケール固有のフォーマットに使用されます。

目次

[編集] パラメータ

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::bad_alloc がスローされる場合は、std::format_error をスローします。また、フォーマッタまたはイテレータ操作によってスローされた例外も伝播します。

[編集]

#include <format>
#include <iostream>
 
template<typename... Args>
inline void println(const std::format_string<Args...> fmt, Args&&... args)
{
    std::cout << std::vformat(fmt.get(), std::make_format_args(args...)) << '\n';
}
 
int main()
{
    println("{}{} {}{}", "Hello", ',', "C++", -1 + 2 * 3 * 4);
}

出力

Hello, C++23

[編集] 関連項目

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