print(std::ostream)
| Definido en el archivo de encabezado <ostream>
|
||
template< class... Args >
void print( std::ostream& os, std::format_string<Args...> fmt, Args&&... args );
|
(desde C++23) | |
Da formato a args de acuerdo a la cadena de formato fmt, e inserta el resultado en el flujo os.
Si la codificación literal ordinaria es UTF-8, es equivalente a:
- std::vprint_unicode
(os, fmt.get(), std::make_format_args(args...));. De lo contrario, es equivalente a - std::vprint_nonunicode
(os, fmt.get(), std::make_format_args(args...));.
El comportamiento es indefinido si std::formatter<Ti, char> no cumple con los requerimientos BasicFormatter para cualquier Ti en Args (según lo requiere std::make_format_args).
Parámetros
| os | - | Flujo de salida al cual insertarle los datos | ||||
| fmt | - |
Cada campo de reemplazo tiene el siguiente formato:
arg-id especifica el índice del argumento en La especificación de formato se define por la especialización de std::formatter del argumento correspondiente.
| ||||
| args... | - | Argumentos a ser formateados |
Valor de retorno
(ninguno)
Excepciones
- std::bad_alloc en errores de asignación.
- Propaga cualquier excepción lanzada por cualquier formatter, p.e. std::format_error, sin importar el valor de
os.exceptions()y sin activar std::ios_base::badbit en el estado de error deos. - Puede lanzar std::ios_base::failure causada por
os.setstate(ios_base::badbit)el cual es llamado si una inserción aosfalla.
Notas
| Macro de prueba de característica | Valor | Estándar | Comentario |
|---|---|---|---|
__cpp_lib_print |
202207L |
(C++23) | Salida formateada |
__cpp_lib_format |
202207L |
(C++23) | Exponiendo std::basic_format_string |
Ejemplo
#include <array>
#include <cctype>
#include <cstdio>
#include <format>
#include <numbers>
#include <ranges>
#include <sstream>
int main()
{
std::array<char, 24> buf;
std::format_to(buf.begin(), "{:.15f}", std::numbers::sqrt2);
unsigned num{}, sum{};
auto v = buf
| std::views::filter(isdigit)
| std::views::transform([](char x) { return x - '0'; })
| std::views::take_while([&sum](char) { return sum < 42; });
for (auto n : v)
sum += n, ++num;
std::stringstream stream;
std::print(stream,
"√2 = {}...\n"
"La suma de los primeros {} dígitos es {}{}",
std::numbers::sqrt2, num, sum, '.'
);
std::puts(stream.str().data());
}
Salida:
√2 = 1.4142135623730951...
La suma de los primeros 13 dígitos es 42.
Véase también
(C++23) |
Genera la representación formateada de los argumentos con la adición del caracter de nueva línea '\n' al final (plantilla de función) |
(C++23) |
Imprime en stdout, o en un flujo de archivo usando la representación formateada de los argumentos (plantilla de función) |
(C++20) |
Almacena una representación formateada de los argumentos en una cadena nueva. (plantilla de función) |