std:: runtime_format
|
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) | |
str
con
s
.
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) |
|
(C++20)
(C++20)
(C++20)
|
plantilla de clase que realiza comprobaciones de cadenas de formato en tiempo de compilación durante la construcción
(plantilla de clase) |