std:: formatted_size
|
Definido en el encabezado
<format>
|
||
|
template
<
class
...
Args
>
std:: size_t formatted_size ( std:: format_string < Args... > fmt, Args && ... args ) ; |
(1) | (desde C++20) |
|
template
<
class
...
Args
>
std:: size_t formatted_size ( std:: wformat_string < Args... > fmt, Args && ... args ) ; |
(2) | (desde C++20) |
|
template
<
class
...
Args
>
std::
size_t
formatted_size
(
const
std::
locale
&
loc,
|
(3) | (desde C++20) |
|
template
<
class
...
Args
>
std::
size_t
formatted_size
(
const
std::
locale
&
loc,
|
(4) | (desde C++20) |
Determine el número total de caracteres en la cadena formateada mediante el formato de args de acuerdo con la cadena de formato fmt . Si está presente, loc se utiliza para el formato específico de la configuración regional.
El comportamiento no está definido si
std::
formatter
<
std::
remove_cvref_t
<
Ti
>
, CharT
>
no cumple con los requisitos de
BasicFormatter
para cualquier
Ti
en
Args
.
Contenidos |
Parámetros
| fmt | - |
un objeto que representa la cadena de formato. La cadena de formato consiste en
Cada campo de reemplazo tiene el siguiente formato:
1)
campo de reemplazo sin especificación de formato
2)
campo de reemplazo con especificación de formato
|
||||||||||||||||||||||||||||||||||||||||||||||
| args... | - | argumentos a formatear | ||||||||||||||||||||||||||||||||||||||||||||||
| loc | - | std::locale utilizado para el formato específico de la configuración regional | ||||||||||||||||||||||||||||||||||||||||||||||
Valor de retorno
El número total de caracteres en la cadena formateada.
Excepciones
Propaga cualquier excepción lanzada por formatter.
Ejemplo
#include <format> #include <iomanip> #include <iostream> #include <string_view> #include <vector> int main() { using namespace std::literals::string_view_literals; constexpr auto fmt_str{"Hubble's H{0} {1} {2:*^4} miles/sec/mpc."sv}; constexpr auto sub_zero{"\N{SUBSCRIPT ZERO}"sv}; // "₀" or {0342, 130, 128} constexpr auto aprox_equ{"\N{APPROXIMATELY EQUAL TO}"sv}; // "≅" or {0342, 137, 133} constexpr int Ho{42}; // H₀ const auto min_buffer_size{std::formatted_size(fmt_str, sub_zero, aprox_equ, Ho)}; std::cout << "Min buffer size = " << min_buffer_size << '\n'; // Use std::vector as dynamic buffer. The buffer does not include the trailing '\0'. std::vector<char> buffer(min_buffer_size); std::format_to_n(buffer.data(), buffer.size(), fmt_str, sub_zero, aprox_equ, Ho); std::cout << "Buffer: " << std::quoted(std::string_view{buffer.data(), min_buffer_size}) << '\n'; // Print the buffer directly after adding the trailing '\0'. buffer.push_back('\0'); std::cout << "Buffer: " << std::quoted(buffer.data()) << '\n'; }
Salida:
Min buffer size = 37 Buffer: "Hubble's H₀ ≅ *42* miles/sec/mpc." Buffer: "Hubble's H₀ ≅ *42* miles/sec/mpc."
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| P2216R3 | C++20 | lanza std::format_error para cadena de formato inválida | cadena de formato inválida resulta en error en tiempo de compilación |
| P2418R2 | C++20 |
objetos que no son ni const-usables ni copiables
(como objetos tipo generador) no son formateables |
permitir formatear estos objetos |
| P2508R1 | C++20 | no hay nombre visible para el usuario para esta facilidad |
el nombre
basic_format_string
está expuesto
|
Véase también
|
(C++20)
|
escribe una representación formateada de sus argumentos a través de un iterador de salida
(plantilla de función) |
|
(C++20)
|
escribe una representación formateada de sus argumentos a través de un iterador de salida, sin exceder un tamaño especificado
(plantilla de función) |