Namensräume
Varianten
Aktionen

std::vformat_to

Von cppreference.com
< cpp‎ | utility‎ | format
 
 
 
 
Definiert in Header <format>
template< class OutputIt >
OutputIt vformat_to( OutputIt out, std::string_view fmt, std::format_args args );
(1) (seit C++20)
template< class OutputIt >
OutputIt vformat_to( OutputIt out, std::wstring_view fmt, std::wformat_args args );
(2) (seit C++20)
template< class OutputIt >

OutputIt vformat_to( OutputIt out, const std::locale& loc,

                     std::string_view fmt, std::format_args args );
(3) (seit C++20)
template< class OutputIt >

OutputIt vformat_to( OutputIt out, const std::locale& loc,

                     std::wstring_view fmt, std::wformat_args args );
(4) (seit C++20)

Formatiert die von args gehaltenen Argumente gemäß der Formatierungszeichenkette fmt und schreibt das Ergebnis in den Ausgabeargumenteniterator out. Falls vorhanden, wird loc für die lokalabhängige Formatierung verwendet.

Sei CharT decltype(fmt)::char_type (char für Überladungen (1,3), wchar_t für Überladungen (2,4)).

Diese Überladungen nehmen nur an der Überladungsauflösung teil, wenn OutputIt das Konzept std::output_iterator<const CharT&> erfüllt.

OutputIt muss das Konzept std::output_iterator<const CharT&> modellieren (die semantischen Anforderungen erfüllen), und std::formatter<Ti, CharT> muss die Formatter-Anforderungen für jedes Ti im Typ der Argumente erfüllen. Andernfalls ist das Verhalten undefiniert.

Inhalt

[bearbeiten] Parameter

out - Iterator auf den Ausgabepuffer
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
loc - std::locale, die für die lokale-spezifische Formatierung verwendet wird.

[bearbeiten] Rückgabewert

Iterator nach dem Ende des Ausgabe-Bereichs.

[bearbeiten] Ausnahmen

Wirft std::format_error, wenn fmt keine gültige Formatierungszeichenkette für die bereitgestellten Argumente ist. Leitet außerdem alle Ausnahmen weiter, die von Formatierungs- oder Iterator-Operationen ausgelöst werden.

[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
P2216R3 C++20 Typ von args ist parametrisiert auf OutputIt nicht parametrisiert

[bearbeiten] Siehe auch