std:: 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 | - |
Каждое поле замены имеет следующий формат:
1)
поле замены без спецификации формата
2)
поле замены со спецификацией формата
|
||||||||||||||||||||||||||||||||||||||||||||||
| args... | - | аргументы для форматирования | ||||||||||||||||||||||||||||||||||||||||||||||
Исключения
- std::bad_alloc при ошибке выделения памяти.
- Распространяет любое исключение, выброшенное любым форматтером , например std::format_error , независимо от значения os. exceptions ( ) и без установки ios_base::badbit в состоянии ошибки os .
- Может выбрасывать ios_base::failure , вызванный os. setstate ( ios_base :: badbit ) , который вызывается при неудачной вставке в os .
Примечания
| Макрос тестирования возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__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{}; for (auto n : buf | std::views::filter(isdigit) | std::views::transform([](char x) { return x - '0'; }) | std::views::take_while([&sum](char) { return sum < 42; })) sum += n, ++num; std::stringstream stream; #ifdef __cpp_lib_print std::print(stream, #else stream << std::format( #endif "√2 \N{ALMOST EQUAL TO} {0}.\n" "The sum of its first {1} digits is {2}.", 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)
|
сохраняет форматированное представление аргументов в новой строке
(шаблон функции) |