std:: vprint_unicode, std:: vprint_unicode_buffered
|
Definiert im Header
<print>
|
||
|
void
vprint_unicode
(
std::
FILE
*
stream,
std:: string_view fmt, std:: format_args args ) ; |
(1) | (seit C++23) |
|
void
vprint_unicode_buffered
(
std::
FILE
*
stream,
std:: string_view fmt, std:: format_args args ) ; |
(2) | (seit C++23) |
|
void
vprint_unicode_buffered
(
std::
string_view
fmt,
std::
format_args
args
)
;
|
(3) | (seit C++23) |
Formatiert args gemäß der Formatzeichenkette fmt und schreibt das Ergebnis in den Ausgabestream.
- Sperrt stream .
- Sei out die Zeichendarstellung der Formatierungsargumente, die durch args bereitgestellt und gemäß den in fmt gegebenen Spezifikationen formatiert werden.
- Schreibt out in den stream :
-
- Falls stream auf ein Terminal verweist, das Unicode nur über eine native Unicode-API anzeigen kann, leert es den stream und schreibt out unter Verwendung der nativen Unicode-API in das Terminal.
- Andernfalls schreibt es das unveränderte out in den stream .
- stream ist kein gültiger Zeiger auf einen Ausgabe-C-Stream.
- out enthält ungültige Unicode Codeeinheiten , wenn die native Unicode-API verwendet wird.
std :: vprint_unicode ( stream, "{}" , std:: make_format_args ( out ) ) ; .
|
Nach dem Schreiben von Zeichen in den Ausgabestream, stellt es einen beobachtbaren Kontrollpunkt her. |
(since C++26) |
Inhaltsverzeichnis |
Parameter
| stream | - | Ausgabedateistream, in den geschrieben wird | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
Jedes Ersetzungsfeld hat folgendes Format:
1)
Ersetzungsfeld ohne Formatangabe
2)
Ersetzungsfeld mit Formatangabe
|
||||||||||||||||||||||||||||||||||||||||||||||
| args | - | zu formatierende Argumente | ||||||||||||||||||||||||||||||||||||||||||||||
Exceptions
- std::bad_alloc bei Allokationsfehlern.
- std::system_error , wenn das Schreiben in den Stream fehlschlägt.
- Leitet alle von verwendeten Formatters ausgelösten Ausnahmen weiter, z.B. std::format_error .
Hinweise
Der C++-Standard empfiehlt den Implementierern, eine Diagnosemeldung auszugeben, wenn out ungültige Unicode-Codeeinheiten enthält.
Unter POSIX erfolgt das Schreiben auf ein Terminal mittels der üblichen Standard-I/O-Funktionen, daher besteht keine Notwendigkeit, ein Terminal anders als jeden anderen Dateistrom zu behandeln.
Unter Windows bezieht sich der Stream auf ein Terminal, wenn
GetConsoleMode
(
_get_osfhandle
(
_fileno
(
stream
)
)
)
einen Wert ungleich Null zurückgibt (siehe Windows-Dokumentation für
GetConsoleMode
,
_get_osfhandle
und
_fileno
). Die native Unicode-API unter Windows ist
WriteConsoleW
.
Wenn der Aufruf der nativen Unicode-API Transkodierung erfordert, werden ungültige Codeeinheiten durch den
U+FFFD
REPLACEMENT CHARACTER ersetzt (siehe "The Unicode Standard - Core Specification",
Kapitel 3.9
).
| Feature-Test Makro | Wert | Std | Funktion |
|---|---|---|---|
__cpp_lib_print
|
202207L
|
(C++23) | Formatierte Ausgabe |
202403L
|
(C++26)
(DR23) |
Ungepufferte formatierte Ausgabe | |
202406L
|
(C++26)
(DR23) |
Aktivierung ungepufferter formatierter Ausgabe für weitere formatierbare Typen | |
__cpp_lib_format
|
202207L
|
(C++23) | Verfügbarmachung von std::basic_format_string |
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 4044 | C++23 |
die native Unicode-API wurde immer verwendet, wenn
das Terminal, auf das stream verweist, Unicode anzeigen kann |
nur verwendet, wenn das Terminal Unicode
ausschließlich mit der nativen Unicode-API anzeigen kann |
| P3107R5 | C++23 | Druckoperationen waren immer gepuffert | bietet ungepufferte Druckoperationen |
| P3235R3 | C++23 |
die Namen der durch
P3107R5 hinzugefügten Funktionen waren irreführend |
änderte die Funktionsnamen |
Siehe auch
|
gibt auf
stdout
oder einen Dateistrom aus unter Verwendung von
typeradierten
Argumentdarstellungen
(Funktion) |
|
|
(C++23)
|
führt Unicode-fähige Ausgabe unter Verwendung von
typeradierten
Argumentdarstellungen durch
(Funktion) |
|
(C++23)
|
gibt auf
stdout
oder einen Dateistrom aus unter Verwendung von
formatierter
Darstellung der Argumente
(Funktions-Template) |
|
(C++20)
|
speichert formatierte Darstellung der Argumente in einem neuen String
(Funktions-Template) |
Externe Links
| 1. | Unicode |
| 2. | Der Unicode-Standard Version 14.0 - Kernspezifikation |