std::runtime_format
From cppreference.com
| ヘッダー <format> で定義 |
||
| /*runtime-format-string*/<char> runtime_format( std::string_view fmt ) noexcept; |
(1) | (C++26以降) |
| /*runtime-format-string*/<wchar_t> runtime_format( std::wstring_view fmt ) noexcept; |
(2) | (C++26以降) |
ユーザー指向のフォーマット関数で直接使用でき、std::basic_format_string に暗黙的に変換可能な、実行時フォーマット文字列を格納するオブジェクトを返します。
目次 |
[編集] パラメータ
| fmt | - | 文字列ビュー |
[編集] 戻り値
exposición-only 型の実行時フォーマット文字列を保持するオブジェクト
クラステンプレート runtime-format-string <CharT>
| template< class CharT > struct /*runtime-format-string*/; |
(説明用*) | |
メンバーオブジェクト
返されたオブジェクトは、 exposición-only の非静的メンバ変数 str を std::basic_string_view<CharT> 型で含みます。
コンストラクタと代入
| /*runtime-format-string*/( std::basic_string_view<CharT> s ) noexcept; |
(1) | |
| /*runtime-format-string*/( const /*runtime-format-string*/& ) = delete; |
(2) | |
| /*runtime-format-string*/& operator=( const /*runtime-format-string*/& ) = delete; |
(3) | |
1)
str を s で初期化します。2) コピーコンストラクタは明示的に削除されています。この型はコピーも移動もできません。
3) 代入演算子は明示的に削除されています。
[編集] 注記
runtime_format の戻り値の型はコピーも移動もできないため、 runtime_fmt を lvalue として渡そうとすると、 std::basic_format_string の構築が抑制され、プログラムは不正な形式になります。runtime_format を使用して std::basic_format_string を構築するには、 runtime_format の返り値を、コピー省略が保証される prvalue として直接 std::basic_format_string に渡します。
auto runtime_fmt = std::runtime_format("{}"); auto s0 = std::format(runtime_fmt, 1); // error auto s1 = std::format(std::move(runtime_fmt), 1); // still error auto s2 = std::format(std::runtime_format("{}"), 1); // ok
| 機能テストマクロ | 値 | 規格 | 機能 |
|---|---|---|---|
__cpp_lib_format |
202311L |
(C++26) | 実行時フォーマット文字列 |
[編集] 例
このコードを実行
#include <format> #include <print> #include <string> #include <string_view> int main() { std::print("Hello {}!\n", "world"); std::string fmt; for (int i{}; i != 3; ++i) { fmt += "{} "; // constructs the formatting string std::print("{} : ", fmt); std::println(std::runtime_format(fmt), "alpha", 'Z', 3.14, "unused"); } }
出力
Hello world!
{} : alpha
{} {} : alpha Z
{} {} {} : alpha Z 3.14[編集] 関連項目
| (C++20) |
引数のフォーマット済み表現を新しい文字列に格納する (関数テンプレート) |
| (C++20) |
型消去された引数表現を使用する std::format の非テンプレート版 (関数) |
| (C++20)(C++20)(C++20) |
構築時にコンパイル時フォーマット文字列チェックを実行するクラステンプレート (クラステンプレート) |