print(std::ostream)
Определено в заголовке <ostream> | ||
|---|---|---|
template< class... Args > void print( std::ostream& os, std::format_string<Args...> fmt, Args&&... args ); | (с C++23) |
Форматирует args в соответствии со строкой форматирования fmt, и вставляет результат в поток os.
Если обычное кодирование литералов равно UTF-8, эквивалентно:
-
std::vprint_unicode(os, fmt.get(), std::make_format_args(args...));. В противном случае, -
std::vprint_nonunicode(os, fmt.get(), std::make_format_args(args...));.
Поведение не определено, если std::formatter<Ti, char> не удовлетворяет требованиям BasicFormatter для любого Ti в Args (как требуется std::make_format_args).
Параметры
| os | - | поток вывода для вставки данных | ||||||||||||||
| fmt | - | объект, представляющий строку форматирования. Строка форматирования состоит из
Каждое поле замещения имеет следующий формат:
|
||||||||||||||
| args... | - | аргументы, которые нужно отформатировать |
Возвращаемое значение
(нет)
Исключения
-
std::bad_allocпри сбое выделения памяти. - Передает любое исключение, брошенное любым форматировщиком, например
std::format_error, вне зависимости от значенияos.exceptions()и без включенияios_base::badbitв состоянии ошибкиos. - Может бросить
ios_base::failureвызываемоеos.setstate(ios_base::badbit), которое вызывается, если вставка вosзавершится неудачно.
Примечания
| Макрокоманда проверки наличия функции | Значение | Std | Функция |
|---|---|---|---|
__cpp_lib_print | 202207L | (C++23) | Форматированный вывод |
__cpp_lib_format | 202207L | (C++23) | Экспонирование std::basic_format_string |
Пример
#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;
#ifdef __cpp_lib_print
std::print(stream,
#else
stream << std::format(
#endif
"√2 = {}...\n"
"The sum of its first {} digits is {}{}",
std::numbers::sqrt2, num, sum, '.'
);
std::puts(stream.str().data());
}Вывод:
√2 = 1.4142135623730951... The sum of its first 13 digits is 42.
См. также
|
(C++23) | выводит отформатированное представление аргументов с добавленным '\n' (шаблон функции) |
|
(C++23) | выводит в stdout или поток файла с использованием отформатированного представления аргументов (шаблон функции) |
|
(C++20) | сохраняет отформатированное представление аргументов в новой строке (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_ostream/print