Namespaces
Variants

std:: vformat

From cppreference.net
Definido en el encabezado <format>
(1) (desde C++20)
(2) (desde C++20)
(3) (desde C++20)
(4) (desde C++20)

Formatea los argumentos contenidos en args de acuerdo con la cadena de formato fmt , y devuelve el resultado como una cadena. Si está presente, loc se utiliza para el formato específico de la configuración regional.

Contenidos

Parámetros

fmt - un objeto que representa la cadena de formato. La cadena de formato consiste en
  • caracteres ordinarios (excepto { y } ), que se copian sin cambios a la salida,
  • secuencias de escape { { y } } , que se reemplazan con { y } respectivamente en la salida, y
  • campos de reemplazo.

Cada campo de reemplazo tiene el siguiente formato:

{ arg-id (opcional) } (1)
{ arg-id (opcional) : format-spec } (2)
1) campo de reemplazo sin especificación de formato
2) campo de reemplazo con especificación de formato
arg-id - especifica el índice del argumento en args cuyo valor se utilizará para el formato; si se omite, los argumentos se utilizan en orden.

Los arg-id s en una cadena de formato deben estar todos presentes o todos omitidos. Mezclar indexación manual y automática es un error.

format-spec - la especificación de formato definida por la especialización de std::formatter para el argumento correspondiente. No puede comenzar con } .

(since C++23)
(since C++26)
  • Para otros tipos formateables, la especificación de formato está determinada por especializaciones de formatter definidas por el usuario.
args - argumentos a formatear
loc - std::locale utilizado para el formato específico de la configuración regional

Valor de retorno

Un objeto string que contiene el resultado formateado.

Excepciones

Lanza std::format_error si fmt no es una cadena de formato válida para los argumentos proporcionados, o std::bad_alloc en caso de fallo de asignación de memoria. También propaga cualquier excepción lanzada por operaciones de formateadores o iteradores.

Ejemplo

#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);
}

Salida:

Hello, C++23

Véase también