std::vprint_unicode
Определено в заголовке <print> | ||
|---|---|---|
void vprint_unicode( std::FILE* stream,
std::string_view fmt, std::format_args args );
| (1) | (с C++23) |
void vprint_unicode( std::string_view fmt, std::format_args args ); | (2) | (с C++23) |
Форматирует args в соответствии с строкой формата fmt, и записывает результат в поток.
Пусть out — временная string, полученная путём форматирования аргументов в args с помощью std::vformat(fmt, args).
stream ссылается на терминал, способный отображать Unicode, записывает out в этот терминал, используя родной API Unicode. В противном случае записывает неизменённое out в stream. stream равно стандартному потоку вывода C stdout, т.е. std::vprint_unicode(stdout, fmt, args);
Поведение не определено, если:
-
streamне является корректным указателем на поток C; -
outсодержит некорректные Unicode кодовые единицы.
Параметры
| stream | - | выходной поток для записи | ||||||||||||||
| fmt | - | объект, представляющий строку формата. Строка формата состоит из
Каждое поле подстановки имеет следующий формат:
|
||||||||||||||
| args | - | аргументы для форматирования |
Возвращаемое значение
(нет)
Исключения
-
std::bad_allocпри ошибке выделения памяти. -
std::system_error, если запись в поток завершилась неудачно. - Передает любое исключение, брошенное используемыми форматерами, например
std::format_error.
Примечания
Стандарт C++ рекомендует реализаторам выводить диагностическое сообщение, если out содержит некорректные кодовые единицы Unicode.
В POSIX, поток ссылается на терминал, если выражение isatty(fileno(stream)) != 0 истинно (см. документацию POSIX по isatty и fileno).
В Windows, поток ссылается на терминал, если выражение GetConsoleMode(_get_osfhandle(_fileno(stream))) возвращает ненулевое значение (см. документацию Windows по GetConsoleMode, _get_osfhandle и _fileno). Родной API Unicode в Windows — WriteConsoleW.
Если вызов родного API Unicode требует транскодирования, некорректные кодовые единицы заменяются U+FFFD ЗАМЕЩАЮЩИМ СИМВОЛОМ (см. «The Unicode Standard Version 14.0 - Core Specification», глава 3.9).
| Макрокоманда проверки наличия функции | Значение | Стандарт | Функция |
|---|---|---|---|
__cpp_lib_print | 202207L | (C++23) | Форматированный вывод |
__cpp_lib_format | 202207L | (C++23) | Размещение std::basic_format_string |
Пример
См. также
|
(C++23) | печатает в stdout или файл с помощью типобезопасного представления аргумента (функция) |
|
(C++23) | выполняет вывод Unicode с учетом кодировки, используя типобезопасное представление аргумента (функция) |
|
(C++23) | печатает в stdout или файл с использованием форматированного представления аргументов (шаблон функции) |
|
(C++20) | хранит отформатированное представление аргументов в новой строке (шаблон функции) |
Внешние ссылки
| 1. | Unicode |
| 2. | The Unicode Standard Version 14.0 - Core Specification |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/vprint_unicode