std:: vprint_unicode (std::ostream)
|
Определено в заголовке
<ostream>
|
||
|
void
vprint_unicode
(
std::
ostream
&
os,
std:: string_view fmt, std:: format_args args ) ; |
(начиная с C++23) | |
Форматирует args в соответствии со строкой формата fmt и записывает результат в выходной поток os . Вебёт себя как FormattedOutputFunction для os , за исключением некоторых деталей обработки ошибок, которые отличаются .
Выполняет следующие операции в указанном порядке:
- Сначала функция создает и проверяет sentry объект.
- Инициализирует автоматическую переменную как будто бы std:: string out = std:: vformat ( os. getloc ( ) , fmt, args ) ; .
- Записывает out в os :
-
- Если os ссылается на терминал, способный отображать Unicode только через нативный Unicode API , сбрасывает буфер os и записывает out в терминал с использованием нативного Unicode API.
-
В противном случае, вставляет последовательность символов
[out. begin ( ),out. end ( ))в os .
Если запись в терминал или вставка в os завершается неудачей, вызывается os. setstate ( std:: ios_base :: badbit ) .
|
После записи символов в os , устанавливает наблюдаемую точку контроля . |
(since C++26) |
Если out содержит некорректные Unicode кодовые единицы при использовании нативного Unicode API, поведение не определено.
Содержание |
Параметры
| os | - | выходной поток для вставки данных | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
Каждое поле замены имеет следующий формат:
1)
поле замены без спецификации формата
2)
поле замены со спецификацией формата
|
||||||||||||||||||||||||||||||||||||||||||||||
| args | - | аргументы для форматирования | ||||||||||||||||||||||||||||||||||||||||||||||
Исключения
- std::bad_alloc при ошибке выделения памяти.
- Распространяет любое исключение, выброшенное любым formatter , например std::format_error , независимо от значения os. exceptions ( ) и без установки ios_base::badbit в состоянии ошибки os .
- Может выбросить ios_base::failure , вызванный os. setstate ( ios_base :: badbit ) , который вызывается при неудачной вставке в os .
Примечания
Если вызов нативного Unicode API требует перекодировки, недопустимые кодовые единицы заменяются на
U+FFFD
REPLACEMENT CHARACTER (см. "The Unicode Standard - Core Specification",
Chapter 3.9
).
| Макрос тестирования возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_print
|
202207L
|
(C++23) | Форматированный вывод |
__cpp_lib_format
|
202207L
|
(C++23) | Предоставление std::basic_format_string |
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 4044 | C++23 |
нативный Unicode API всегда использовался, если
терминал, на который ссылается os может отображать Unicode |
используется только если терминал может использовать
только нативный Unicode API для отображения Unicode |
Смотрите также
|
(C++23)
|
выводит символьные данные с использованием
type-erased
представления аргументов
(функция) |
|
(C++23)
|
выводит
форматированное
представление аргументов
(шаблон функции) |
|
вставляет символьные данные или вставляет в rvalue поток
(шаблон функции) |
|
|
выводит в поддерживающий Unicode
stdout
или файловый поток с использованием
type-erased
представления аргументов
(функция) |
|
|
(C++20)
|
сохраняет форматированное представление аргументов в новой строке
(шаблон функции) |
Внешние ссылки
| 1. | Unicode — Википедия |
| 2. | The Unicode Standard Version 14.0 — Core Specification |