std:: formatter < pair-or-tuple >
|
Definiert im Header
<format>
|
||
|
template
<
class
CharT,
std::
formattable
<
CharT
>
...
Ts
>
struct formatter < /*pair-or-tuple*/ < Ts... > , CharT > ; |
(seit C++23) | |
Die Template-Spezialisierung von std::formatter für std::pair und std::tuple ermöglicht es Benutzern, ein Paar oder ein Tupel in seine textuelle Darstellung als Sammlung von Elementen unter Verwendung von Formatierungsfunktionen zu konvertieren.
Der ausschließlich für die Darstellung verwendete Name /*pair-or-tuple*/ bezeichnet entweder das Klassentemplate std::pair oder std::tuple .
Diese Spezialisierung erfüllt die Formatter Anforderungen, falls ( std:: formattable < const Ts, CharT > && ... ) true ergibt. Sie erfüllt stets die BasicFormatter Anforderungen.
Inhaltsverzeichnis |
Formatspezifikation
Die Syntax von tuple-format-spec lautet:
| tuple-fill-and-align (optional) width (optional) tuple-type (optional) | |||||||||
Das
tuple-fill-and-align
wird auf die gleiche Weise interpretiert wie ein
fill-and-align
, mit der Ausnahme, dass das
fill
in
tuple-fill-and-align
jedes Zeichen außer
{
,
}
oder
:
ist.
Die width wird in der standard format width specification beschrieben.
Der tuple-type ändert die Art und Weise, wie ein Tupel formatiert wird, wobei bestimmte Optionen nur mit bestimmten Argumenttypen gültig sind.
Die verfügbaren Tupel-Präsentationstypen sind:
-
m: Gibt an, dass sowohl öffnende als auch schließende Klammern "" sein sollten, während das Trennzeichen ": " sein sollte.
-
-
Wenn
mals der tuple-type gewählt wird, ist das Programm fehlerhaft, es sei denn, sizeof... ( Ts ) == 2 ist true .
-
Wenn
-
n: Gibt an, dass Trennzeichen, öffnende und schließende Klammern "" sein sollen.
Member-Objekte
| Mitgliedername | Definition |
underlying_
(privat)
|
Tupel von zugrundeliegenden Formatierern vom Typ
std::
tuple
<
std::
formatter
<
std::
remove_cvref_t
<
Ts
>
, CharT
>
...
>
( Nur zur Darstellung verwendetes Mitgliedsobjekt* ) |
separator_
(privat)
|
Ein String, der den Separator des formatierten Tupelergebnisses darstellt (Standardwert:
", "
)
( Nur zur Darstellung verwendetes Mitgliedsobjekt* ) |
opening-bracket_
(privat)
|
Ein String, der die öffnende Klammer des formatierten Tupelergebnisses darstellt (Standardwert:
"("
)
( Nur zur Darstellung verwendetes Mitgliedsobjekt* ) |
closing-bracket_
(privat)
|
Ein String, der die schließende Klammer des formatierten Tupelergebnisses darstellt (Standardwert:
")"
)
( Nur zur Darstellung verwendetes Mitgliedsobjekt* ) |
Memberfunktionen
|
set_separator
|
setzt einen bestimmten Separator für das formatierte Tupelergebnis
(öffentliche Elementfunktion) |
|
set_brackets
|
setzt bestimmte öffnende und schließende Klammern für das formatierte Tupelergebnis
(öffentliche Elementfunktion) |
|
parse
|
parst den Formatbezeichner wie durch
tuple-format-spec
angegeben
(öffentliche Elementfunktion) |
|
format
|
schreibt die formatierte Tupelausgabe wie durch
tuple-format-spec
angegeben
(öffentliche Elementfunktion) |
std::formatter< pair-or-tuple >:: set_separator
|
constexpr
void
set_separator
(
std::
basic_string_view
<
CharT
>
sep
)
noexcept
;
|
||
Weist
sep
dem
separator_
zu.
std::formatter< pair-or-tuple >:: set_brackets
|
constexpr
void
set_brackets
(
std::
basic_string_view
<
CharT
>
opening,
std:: basic_string_view < CharT > closing ) noexcept ; |
||
Weist
opening
und
closing
jeweils
opening-bracket_
und
closing-bracket_
zu.
std::formatter< pair-or-tuple >:: parse
|
template
<
class
ParseContext
>
constexpr auto parse ( ParseContext & ctx ) - > ParseContext :: iterator ; |
||
Parst die Format-Spezifizierer als einen tuple-format-spec und speichert die geparsten Spezifizierer im aktuellen Objekt.
Falls
tuple-type
oder die
n
-Option vorhanden sind, werden die Werte von
opening-bracket
,
closing-bracket
und
separator
entsprechend angepasst.
Ruft für jedes Element
e
in
underlying_
e.
parse
(
ctx
)
auf, um einen leeren
format-spec
zu parsen, und falls
e.
set_debug_format
(
)
ein gültiger Ausdruck ist, ruft es
e.
set_debug_format
(
)
auf.
Gibt einen Iterator zurück, der über das Ende des tuple-format-spec hinauszeigt.
std::formatter< pair-or-tuple >:: format
|
template
<
class
FormatContext
>
FormatContext
::
iterator
|
||
/*maybe-const-pair-or-tuple*/ bezeichnet:
- const /*pair-or-tuple*/ , falls ( std:: formattable < const Ts, CharT > && ... ) true ist,
- /*pair-or-tuple*/ andernfalls.
Schreibt Folgendes in ctx. out ( ) gemäß tuple-format-spec , in dieser Reihenfolge:
-
opening-bracket_, -
für jeden Index
I
in
[ 0 ,sizeof... ( Ts )):
-
-
falls
I
!
=
0
,
separator_, -
das Ergebnis des Schreibens von
std
::
get
<
I
>
(
elems
)
über
std
::
get
<
I
>
(
underlying_) , und
-
falls
I
!
=
0
,
-
closing-bracket_.
Gibt einen Iterator zurück, der hinter den Ausgabebereich zeigt.
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 3892 | C++23 | die Formatierung verschachtelter Tupel war fehlerhaft | korrigiert |
Siehe auch
|
(C++20)
|
definiert Formatierungsregeln für einen gegebenen Typ
(Klassentemplate) |