名前空間
変種
操作

std::runtime_format

From cppreference.com
< cpp‎ | utility‎ | format
 
 
 
 
ヘッダー <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 の非静的メンバ変数 strstd::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) strs で初期化します。
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 の非テンプレート版
(関数) [編集]
構築時にコンパイル時フォーマット文字列チェックを実行するクラステンプレート
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)