std:: vprint_unicode (std::ostream)
|
Defined in header
<ostream>
|
||
|
void
vprint_unicode
(
std::
ostream
&
os,
std:: string_view fmt, std:: format_args args ) ; |
(since C++23) | |
Format args according to the format string fmt , and writes the result to the output stream os . Behaves as FormattedOutputFunction of os , except that some details of error reporting differ .
Performs the following operations in order:
- First, the function constructs and checks the sentry object.
- Initializes an automatic variable as if by std:: string out = std:: vformat ( os. getloc ( ) , fmt, args ) ; .
- Writes out to os :
-
- If os refers to a terminal that is only capable of displaying Unicode via a native Unicode API , flushes os and writes out to the terminal using the native Unicode API.
-
Otherwise, inserts the character sequence
[out. begin ( ),out. end ( ))into os .
If writing to the terminal or inserting into os fails, calls os. setstate ( std:: ios_base :: badbit ) .
|
After writing characters to os , establishes an observable checkpoint . |
(since C++26) |
If out contains invalid Unicode code units when the native Unicode API is used, the behavior is undefined.
Contents |
Parameters
| os | - | output stream to insert data into | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
Each replacement field has the following format:
1)
replacement field without a format specification
2)
replacement field with a format specification
|
||||||||||||||||||||||||||||||||||||||||||||||
| args | - | arguments to be formatted | ||||||||||||||||||||||||||||||||||||||||||||||
Exceptions
- std::bad_alloc on allocation failure.
- Propagate any exception thrown by any formatter , e.g. std::format_error , without regard to the value of os. exceptions ( ) and without turning on ios_base::badbit in the error state of os .
- May throw ios_base::failure caused by os. setstate ( ios_base :: badbit ) which is called if an insertion into os fails.
Notes
If invoking the native Unicode API requires transcoding, the invalid code units are substituted with
U+FFFD
REPLACEMENT CHARACTER (see "The Unicode Standard - Core Specification",
Chapter 3.9
).
| Feature-test macro | Value | Std | Feature |
|---|---|---|---|
__cpp_lib_print
|
202207L
|
(C++23) | Formatted output |
__cpp_lib_format
|
202207L
|
(C++23) | Exposing std::basic_format_string |
Example
|
This section is incomplete
Reason: no example |
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 4044 | C++23 |
the native Unicode API was always used if the
terminal referred to by os can display Unicode |
only used if the terminal can only use
the native Unicode API to display Unicode |
See also
|
(C++23)
|
outputs character data using
type-erased
argument representation
(function) |
|
(C++23)
|
outputs
formatted
representation of the arguments
(function template) |
|
inserts character data or insert into rvalue stream
(function template) |
|
|
prints to Unicode capable
stdout
or a file stream using
type-erased
argument representation
(function) |
|
|
(C++20)
|
stores formatted representation of the arguments in a new string
(function template) |
External links
| 1. | Unicode — Wikipedia |
| 2. | The Unicode Standard Version 14.0 — Core Specification |