Espacios de nombres
Variantes
Acciones

std::format_to_n

De cppreference.com
< cpp‎ | utility‎ | format
 
 
Biblioteca de servicios
 
Biblioteca de formato
Funciones de formato
(C++20)
(C++20)
format_to_n
(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>

std::format_to_n_result<OutputIt>
    format_to_n(OutputIt out, std::iter_difference_t<OutputIt> n,

                std::string_view fmt, const Args&... args);
(1) (desde C++20)
template<class OutputIt, class... Args>

std::format_to_n_result<OutputIt>
    format_to_n(OutputIt out, std::iter_difference_t<OutputIt> n,

                std::wstring_view fmt, const Args&... args);
(2) (desde C++20)
template<class OutputIt, class... Args>

std::format_to_n_result<OutputIt>
    format_to_n(OutputIt out, std::iter_difference_t<OutputIt> n,

                const std::locale& loc, std::string_view fmt, const Args&... args);
(3) (desde C++20)
template<class OutputIt, class... Args>

std::format_to_n_result<OutputIt>
    format_to_n(OutputIt out, std::iter_difference_t<OutputIt> n,

                const std::locale& loc, std::wstring_view fmt, const Args&... args);
(4) (desde C++20)
template<class OutputIt>

struct format_to_n_result {
    OutputIt out;
    std::iter_difference_t<OutputIt> size;

};
(5) (desde C++20)

Formatea a args de acuerdo a la cadena de formato fmt, y escribe el resultado al iterador de salida out. Se escriben n caracteres como máximo. 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.

5) std::format_to_n_result no tiene clases base u otros miembros, excepto out, size, y las funciones miembro especiales declaradas implícitamente.

Contenido

[editar] Parámetros

out - Iterador al búfer de salida.
n - Número máximo de caracteres a ser escritos al búfer.
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.

[editar] Valor de retorno

Un format_to_n_result tal que el miembro out es un iterador después del final del rango de salida, y el miembro size es el tamaño de la salida (no truncada).

[editar] 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.

[editar] Ejemplo

#include <format>
#include <string_view>
#include <iostream>
 
int main()
{
    char buffer[64];
 
    const auto result =
        std::format_to_n(buffer, std::size(buffer), 
                         "Hubble's H{0} {1} {2} km/sec/mpc.",
                         "\u2080", "\u2245", 71);
 
    std::cout << "Búfer: \"" << std::string_view{buffer, result.size} << "\"\n"
              << "Tamaño del búfer = " << std::size(buffer) << '\n'
              << "Tamaño de la salida sin truncar = " << result.size << '\n';
}

Salida:

Búfer: "Hubble's H₀ ≅ 71 km/sec/mpc."
Tamaño del búfer = 64
Tamaño de la salida sin truncar = 35

[editar] Véase también

(C++20)
Almacena una representación formateada de los argumentos en una cadena nueva.
(plantilla de función) [editar]
(C++20)
Escribe una representación formateada de sus argumentos mediante un iterador de salida.
(plantilla de función) [editar]
Determina el número de caracteres necesario para almacenar la representación formateada de sus argumentos.
(plantilla de función) [editar]