Namespaces
Variants

std:: vprint_nonunicode, std:: vprint_nonunicode_buffered

From cppreference.net
< cpp ‎ | io
Print functions
Print functions
(C++23)
(C++23)
vprint_nonunicode vprint_nonunicode_buffered
(C++23) (C++23)
Определено в заголовочном файле <print>
void vprint_nonunicode ( std:: FILE * stream,
std:: string_view fmt, std:: format_args args ) ;
(1) (начиная с C++23)
void vprint_nonunicode_buffered
( std:: FILE * stream, std:: string_view fmt, std:: format_args args ) ;
(2) (начиная с C++23)
void vprint_nonunicode_buffered
( std:: string_view fmt, std:: format_args args ) ;
(3) (начиная с C++23)

Форматирует args в соответствии со строкой формата fmt и записывает результат в выходной поток.

1) Удерживая блокировку на stream , записывает символьное представление аргументов форматирования, предоставленных args , отформатированное в соответствии со спецификациями, заданными в fmt , в stream .
Если stream не является корректным указателем на выходной C-поток, поведение не определено.
2) Эквивалентно std:: string out = std:: vformat ( fmt, args ) ;
std :: vprint_nonunicode ( stream, "{}" , std:: make_format_args ( out ) ) ;
.
3) Эквивалентно std :: vprint_nonunicode_buffered ( stdout , fmt, args ) .


После записи символов в выходной поток, устанавливает наблюдаемую точку контроля .

(since C++26)

Содержание

Параметры

stream - выходной файловый поток для записи
fmt - объект, представляющий строку формата. Строка формата состоит из:
  • обычных символов (кроме { и } ), которые копируются в вывод без изменений,
  • escape-последовательностей { { и } } , которые заменяются на { и } соответственно в выводе, и
  • полей замены.

Каждое поле замены имеет следующий формат:

{ arg-id (необязательно) } (1)
{ arg-id (необязательно) : format-spec } (2)
1) поле замены без спецификации формата
2) поле замены со спецификацией формата
arg-id - указывает индекс аргумента в args , значение которого должно быть использовано для форматирования; если он опущен, аргументы используются по порядку.

Все arg-id  в строке формата должны быть либо все указаны, либо все опущены. Смешивание ручной и автоматической индексации является ошибкой.

format-spec - спецификация формата, определяемая специализацией std::formatter для соответствующего аргумента. Не может начинаться с } .

(since C++23)
(since C++26)
  • Для других форматируемых типов спецификация формата определяется пользовательскими специализациями formatter .
args - аргументы для форматирования

Исключения

Примечания

Макрос тестирования возможностей Значение Стандарт Возможность
__cpp_lib_print 202207L (C++23) Форматированный вывод
202403L (C++26)
(DR23)
Небуферизованный форматированный вывод
202406L (C++26)
(DR23)
Включение небуферизованного форматированного вывода для большего количества форматируемых типов
__cpp_lib_format 202207L (C++23) Предоставление доступа к std::basic_format_string

Пример

Отчёты о дефектах

Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
P3107R5 C++23 printing operations were always buffered provides unbuffered printing operations
P3235R3 C++23 the names of the functions added
by P3107R5 were misleading
changed the function names

Смотрите также

выводит в поддерживающий Unicode stdout или файловый поток, используя type-erased представление аргументов
(функция)
выводит символьные данные, используя type-erased представление аргументов
(функция)
(C++23)
выводит в stdout или файловый поток, используя форматированное представление аргументов
(шаблон функции)
(C++20)
сохраняет форматированное представление аргументов в новой строке
(шаблон функции)