Namensräume
Varianten
Aktionen

std::vprint_nonunicode, std::vprint_nonunicode_buffered

Von cppreference.com
< cpp‎ | io
 
 
 
Druckfunktionen
Druckfunktionen
(C++23)
(C++23)
vprint_nonunicodevprint_nonunicode_buffered
(C++23)(C++23)
 
Definiert in Header <print>
void vprint_nonunicode( std::FILE* stream,
                        std::string_view fmt, std::format_args args );
(1) (seit C++23)
void vprint_nonunicode_buffered
    ( std::FILE* stream, std::string_view fmt, std::format_args args );
(2) (seit C++23)
void vprint_nonunicode_buffered
    ( std::string_view fmt, std::format_args args );
(3) (seit C++23)

Formatiert args gemäß der Formatierungszeichenkette fmt und schreibt das Ergebnis in den Ausgabestrom.

1) Unter Sperre auf stream schreibt die Zeichenrepräsentation der Formatierungsargumente, bereitgestellt durch args, formatiert gemäß der Spezifikation in fmt, nach stream.
Wenn stream kein gültiger Zeiger auf einen C-Ausgabestrom ist, ist das Verhalten undefiniert.
2) Äquivalent zu std::string out = std::vformat(fmt, args);
std::vprint_nonunicode(stream, "{}", std::make_format_args(out));
.
3) Äquivalent zu std::vprint_nonunicode_buffered(stdout, fmt, args).


Nach dem Schreiben von Zeichen in den Ausgabestrom wird ein beobachtbarer Kontrollpunkt etabliert.

(seit C++26)

Inhalt

[bearbeiten] Parameter

stream - Ausgabestream, in den geschrieben werden soll
fmt - ein Objekt, das den Formatstring repräsentiert. Der Formatstring besteht aus
  • regulären Zeichen (außer { und }), die unverändert in die Ausgabe kopiert werden,
  • Escape-Sequenzen {{ und }}, die in der Ausgabe durch { und } ersetzt werden, und
  • Ersetzungsfeldern.

Jedes Ersetzungsfeld hat das folgende Format:

{ arg-id (optional) } (1)
{ arg-id (optional) : format-spec } (2)
1) Ersetzungsfeld ohne Formatangabe
2) Ersetzungsfeld mit Formatangabe
arg-id - gibt den Index des Arguments in `args` an, dessen Wert zur Formatierung verwendet werden soll; wenn er weggelassen wird, werden die Argumente in der Reihenfolge verwendet.

Die `arg-id`s in einem Formatstring müssen entweder alle vorhanden sein oder alle weggelassen werden. Das Mischen von manueller und automatischer Indizierung ist ein Fehler.

format-spec - die Formatangabe, die durch die std::formatter-Spezialisierung für das entsprechende Argument definiert ist. Kann nicht mit } beginnen.

(seit C++23)
(seit C++26)
  • Für andere formatierbare Typen wird die Formatangabe durch benutzerspezifische formatter-Spezialisierungen bestimmt.
args - zu formatierende Argumente

[bearbeiten] Ausnahmen

[bearbeiten] Hinweise

Feature-Test-Makro Wert Std Feature
__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 mehr formatierbare Typen
__cpp_lib_format 202207L (C++23) Freigabe von std::basic_format_string

[bearbeiten] Beispiel

[bearbeiten] 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
P3107R5 C++23 Druckoperationen waren immer gepuffert bieten unbuffered Druckoperationen
P3235R3 C++23 die Namen der hinzugefügten Funktionen
von P3107R5 waren irreführend
die Funktionsnamen geändert wurden

[bearbeiten] Siehe auch

druckt auf Unicode-fähige stdout oder einen Dateistream unter Verwendung der typ-erased Argumentdarstellung
(Funktion) [bearbeiten]
gibt Zeichendaten aus unter Verwendung einer typ-erased Argumentdarstellung (type-erased)
(function) [bearbeiten]
(C++23)
druckt nach stdout oder einem Dateistream unter Verwendung der formatierten Darstellung der Argumente
(Funktionstemplate) [bearbeiten]
(C++20)
speichert die formatierte Darstellung der Argumente in einem neuen String
(Funktionstemplate) [bearbeiten]