Espacios de nombres
Variantes

std::format_to

De cppreference.com
 
 
Biblioteca de servicios
 
Biblioteca de formato
Funciones de formato
(C++20)
(C++20)
(C++20)
(C++20)
Formateador
(C++20)
Argumentos de formato
Error de formato
 
Definido en el archivo de encabezado <format>
template<class OutputIt, class... Args> OutputIt format_to(OutputIt out, std::string_view fmt, const Args&... args);
(1) (desde C++20)
template<class OutputIt, class... Args> OutputIt format_to(OutputIt out, std::wstring_view fmt, const Args&... args);
(2) (desde C++20)
template<class OutputIt, class... Args> OutputIt format_to(OutputIt out, const std::locale& loc, std::string_view fmt, const Args&... args);
(3) (desde C++20)
template<class OutputIt, class... Args> OutputIt format_to(OutputIt out, const std::locale& loc, std::wstring_view fmt, const Args&... args);
(4) (desde C++20)

Formatea a args de acuerdo a la cadena de formato fmt, y escribe el resultado al iterador de salida out. Si está presente, se usa loc para un formato específico de la configuración regional.

Dejemos que CharT sea decltype(fmt)::char_type (char para las sobrecargas (1,3), wchar_t para las sobrecargas (2,4)).

Estas sobrecargas solo participan en la resolución de sobrecargas si OutputIt satisface el concepto std::output_iterator<const CharT&>.

El comportamiento no está definido si OutputIt no modela (cumple con los requerimientos semánticos de) el concepto std::output_iterator<const CharT&>, o si std::formatter<Ti, CharT> no cumple con los requerimientos de Formatter para cualquier Ti en Args.

Parámetros

out - Iterador al búfer de salida.
fmt - Vista sobre cadena que representa la cadena de formato. Un objeto que representa la cadena de formato. La cadena de formato consiste en:
  • caracteres ordinarios (excepto { y }), que se copian sin cambiarse 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:

  • un carácter { introductorio;
  • (opcional) arg-id, un número no negativo;
  • (opcional) dos puntos (:) seguido de una especificación de formato;
  • un carácter } final.

arg-id especifica el índice del argumento en args cuyo valor se usará para formatear; si se omite arg-id, los argumentos se usan en orden. Los arg-ids en una cadena de formato tienen que estar presentes o todos deben de omitirse. Mezclar la indexación manual y automática es un error.

La especificación de formato se define por la especialización de std::formatter del argumento correspondiente.

(desde C++23)
(desde C++26)
  • Para los otros tipos formateables, la especificación de formato se determina por especializaciones de formatter definidas por el usuario.


args... - Argumentos a ser formateados.
loc - std::locale usado para un formato específico de la configuración regional.

Valor de retorno

Un iterador después del final del rango de salida.

Excepciones

Lanza std::format_error si fmt no es una cadena de formato válida para los argumentos proporcionados. También propaga cualquier excepción lanzada por el formateador o las operaciones del iterador.

Ejemplo

#include <format>
#include <iostream>
#include <iterator>
#include <string>

auto main() -> int
{
    std::string buffer;

    std::format_to(
        std::back_inserter(buffer), //< OutputIt
        "¡Hola, C++{}!\n",          //< fmt 
        "20");                      //< arg
    std::cout << buffer;
    buffer.clear();

    std::format_to(
        std::back_inserter(buffer), //< OutputIt
        "¡Hola, {0}::{1}!{2}",      //< fmt 
        "std",                      //< arg {0}
        "format_to()",              //< arg {1}
        "\n",                       //< arg {2}
        "param(s) extra...");       //< no se usa
    std::cout << buffer;

    std::wstring wbuffer;
    std::format_to(
        std::back_inserter(wbuffer),//< OutputIt 
        L"¡Hola, {2}::{1}!{0}",     //< fmt
        L"\n",                      //< arg {0}
        L"format_to()",             //< arg {1}
        L"std",                     //< arg {2}
        L"...no es..."              //< no se usa
        L"...un error!");           //< no se usa
    std::wcout << wbuffer;
}

Salida:

¡Hola, C++20!
¡Hola, std::format_to()!
¡Hola, std::format_to()!

Véase también

(C++20)
Almacena una representación formateada de los argumentos en una cadena nueva.
(plantilla de función) [editar]
Escribe una representación formateada de sus argumentos mediante un iterador de salida, no excediendo un tamaño específico.
(plantilla de función) [editar]