Namespaces
Variants

std:: runtime_format

From cppreference.net
Definido en el encabezado <format>
/*runtime-format-string*/ < char > runtime_format ( std:: string_view fmt ) noexcept ;
(1) (desde C++26)
/*runtime-format-string*/ < wchar_t > runtime_format ( std:: wstring_view fmt ) noexcept ;
(2) (desde C++26)

Retorna un objeto que almacena una cadena de formato en tiempo de ejecución directamente utilizable en funciones de formato orientadas al usuario y puede convertirse implícitamente a std::basic_format_string .

Contenidos

Parámetros

fmt - una vista de cadena

Valor de retorno

Un objeto que contiene la cadena de formato en tiempo de ejecución del tipo solo para exposición:

Plantilla de clase runtime-format-string <CharT>

template < class CharT >
struct /*runtime-format-string*/ ;
( solo para exposición* )

Objetos miembro

El objeto devuelto contiene un miembro de datos no estático solo para exposición str de tipo std::basic_string_view<CharT> .

Constructores y asignaciones

/*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) Inicializa str con s .
2) El constructor de copia está explícitamente eliminado. El tipo no es copiable ni movible.
3) La asignación está explícitamente eliminada.

Notas

Dado que el tipo de retorno de runtime_format no es copiable ni movible, un intento de pasar runtime_fmt como glvalue inhibe la construcción de std::basic_format_string lo que resulta en un programa mal formado. Para construir std::basic_format_string con runtime_format , el valor retornado de runtime_format se pasa directamente a std::basic_format_string como prvalue donde la elisión de copia está garantizada.

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
Macro de prueba de características Valor Std Característica
__cpp_lib_format 202311L (C++26) Cadenas de formato en tiempo de ejecución

Ejemplo

#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 += "{} "; // construye la cadena de formato
        std::print("{} : ", fmt);
        std::println(std::runtime_format(fmt), "alpha", 'Z', 3.14, "unused");
    }
}

Salida:

Hello world!
{}  : alpha
{} {}  : alpha Z
{} {} {}  : alpha Z 3.14

Véase también

(C++20)
almacena la representación formateada de los argumentos en una nueva cadena
(plantilla de función)
(C++20)
variante no plantilla de std::format que utiliza representación de argumentos con borrado de tipo
(función)
plantilla de clase que realiza comprobaciones de cadenas de formato en tiempo de compilación durante la construcción
(plantilla de clase)