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).
Contenido |
[editar]Parámetros
os | - | Flujo de salida al cual insertarle los datos | ||||
fmt | - | Un objeto que representa la cadena de formato. La cadena de formato consiste en:
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 |
[editar]Valor de retorno
(ninguno)
[editar]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 ios_base::badbit en el estado de error de os.
- Puede lanzar ios_base::failure causada por os.setstate(ios_base::badbit) el cual es llamado si una inserción a os falla.
[editar]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 |
[editar]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.
[editar]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) |