Defined in header <print> | ||
---|---|---|
void vprint_unicode( std::FILE* stream, std::string_view fmt, std::format_args args ); | (1) | (since C++23) |
void vprint_unicode( std::string_view fmt, std::format_args args ); | (2) | (since C++23) |
Format args
according to the format string fmt
, and writes the result to the stream.
Let out
be a temporary string
produced by formatting the arguments in args
with std::vformat(fmt, args)
.
stream
refers to a terminal capable of displaying Unicode, writes out
to this terminal using the native Unicode API. Otherwise, writes unmodified out
to the stream
.stream
is equal to the standard C output stream stdout
, i.e. std::vprint_unicode(stdout, fmt, args);
The behavior is undefined if:
stream
is not a valid pointer to a C stream; out
contains invalid Unicode code units. stream | - | output file stream to write to | ||||||||||||
fmt | - | an object that represents the format string. The format string consists of
Each replacement field has the following format:
|
||||||||||||
args | - | arguments to be formatted |
(none).
std::bad_alloc
on allocation failure. std::system_error
, if writing to the stream fails. std::format_error
. The C++ standard encourages the implementers to produce a diagnostic message if out
contains invalid Unicode code units.
On POSIX, the stream refers to a terminal if the expression isatty(fileno(stream)) != 0
holds true (see POSIX documentation for isatty
, and fileno
).
On Windows, the stream refers to a terminal if the expression GetConsoleMode(_get_osfhandle(_fileno(stream)))
returns nonzero (see Windows documentation for GetConsoleMode
, _get_osfhandle
, and _fileno
). The native Unicode API on Windows is WriteConsoleW
.
If invoking the native Unicode API requires transcoding, the invalid code units are substituted with U+FFFD
REPLACEMENT CHARACTER (see "The Unicode Standard Version 14.0 - Core Specification", Chapter 3.9).
Feature-test macro | Value | Std | Comment |
---|---|---|---|
__cpp_lib_print | 202207L | (C++23) | Formatted output |
__cpp_lib_format | 202207L | (C++23) | Exposing std::basic_format_string |
(C++23) | prints to stdout or a file stream using type-erased argument representation (function) |
(C++23) | performs Unicode aware output using type-erased argument representation (function) |
(C++23) | prints to stdout or a file stream using formatted representation of the arguments (function template) |
(C++20) | stores formatted representation of the arguments in a new string (function template) |
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