std:: formatter <std::chrono::year_month>
|
Definiert im Header
<chrono>
|
||
|
template
<
class
CharT
>
struct formatter < std:: chrono :: year_month , CharT > ; |
(seit C++20) | |
Spezialisierung von std::formatter , die Formatierungsregeln für std::chrono::year_month definiert.
Die std::formatter Spezialisierung wird normalerweise nicht direkt aufgerufen, sondern wird über Formatierungsfunktionen verwendet.
Inhaltsverzeichnis |
Formatspezifikation
Die Formatspezifikation hat die Form
fill-and-align
(optional)
width
(optional)
precision
(optional)
L
(optional)
chrono-spec
(optional)
|
|||||||||
fill-and-align
,
width
und
precision
haben dieselbe Bedeutung wie in der
Standard-Format-Spezifikation
.
precision
ist nur gültig für
std::chrono::duration
-Typen, bei denen der Repräsentationstyp
Rep
ein Gleitkommatyp ist, andernfalls wird
std::format_error
ausgelöst.
Das für die Formatierung verwendete Gebietsschema wird wie folgt bestimmt:
-
die Standard-Lokalisierung
"C"
falls
Lnicht in der Formatangabe vorhanden ist, - andernfalls die durch das std::locale bezeichnete Lokalisierung, falls eines an die Formatierungsfunktion übergeben wurde,
-
andernfalls (
List vorhanden, aber kein std::locale wurde an die Formatierungsfunktion übergeben) die globale Lokalisierung.
Wenn die (gewöhnliche oder breite) String-Literal-Kodierung eine Unicode-Kodierungsform ist und das Gebietsschema zu einem implementierungsdefinierten Satz von Gebietsschemata gehört, wird jeder ersetzende Vorgang, der vom Gebietsschema abhängt, so durchgeführt, als ob die Ersatzzeichenfolge in die Literalkodierung konvertiert würde.
Die
chrono-spec
besteht aus einem oder mehreren Konversionsspezifizierern und gewöhnlichen Zeichen (außer
{
,
}
und
%
). Eine
chrono-spec
muss mit einem Konversionsspezifizierer beginnen. Alle gewöhnlichen Zeichen werden unverändert in die Ausgabe geschrieben. Jeder unmodifizierte Konversionsspezifizierer beginnt mit einem
%
-Zeichen, gefolgt von einem Zeichen, das das Verhalten des Spezifizierers bestimmt. Einige Konversionsspezifizierer haben eine modifizierte Form, bei der ein
E
- oder
O
-Modifikatorzeichen nach dem
%
-Zeichen eingefügt wird. Jeder Konversionsspezifizierer wird wie unten beschrieben durch entsprechende Zeichen in der Ausgabe ersetzt.
Sofern nicht anders angegeben, wird das Chrono-Objekt, wenn die
chrono-spec
leer ist, so formatiert, als würde es durch
Streaming
an ein Objekt
os
vom Typ
std::
basic_ostringstream
<
CharT
>
mit der Formatierungs-Locale (eine von
std::
locale
::
classic
(
)
, dem übergebenen
std::locale
-Objekt und
std::
locale
::
global
(
)
)
imbuiert
und durch Kopieren von
os.
str
(
)
in den Ausgabepuffer mit zusätzlichem Padding und Anpassungen gemäß den Format-Spezifizierern übertragen.
Die folgenden Formatbezeichner sind verfügbar:
| Konvertierungsspezifizierer | Erklärung | |
|---|---|---|
%%
|
Schreibt ein literales
%
Zeichen.
|
|
%n
|
Schreibt ein Zeilenumbruchzeichen. | |
%t
|
Schreibt ein horizontales Tabulatorzeichen. | |
| Jahr | ||
%C
%EC
|
Schreibt das Jahr geteilt durch 100 unter Verwendung von Abrundungsdivision. Wenn das Ergebnis eine einzelne Dezimalziffer ist, wird sie mit 0 vorangestellt.
Der modifizierte Befehl
|
|
%y
%Oy
%Ey
|
Schreibt die letzten zwei Dezimalziffern des Jahres. Wenn das Ergebnis eine einzelne Ziffer ist, wird sie mit 0 vorangestellt.
Der modifizierte Befehl
Der modifizierte Befehl
|
|
%Y
%EY
|
Schreibt das Jahr als Dezimalzahl. Wenn das Ergebnis weniger als vier Ziffern hat, wird es links mit Nullen auf vier Ziffern aufgefüllt.
Der modifizierte Befehl
|
|
| Monat | ||
%b
%h
|
Schreibt den lokalen abgekürzten Monatsnamen. | |
%B
|
Schreibt den lokalen vollständigen Monatsnamen. | |
%m
%Om
|
Schreibt den Monat als Dezimalzahl (Januar ist
01
). Wenn das Ergebnis eine einzelne Ziffer ist, wird sie mit 0 vorangestellt.
Der modifizierte Befehl
|
|
Die folgenden Spezifizierer werden erkannt, führen jedoch dazu, dass std::format_error ausgelöst wird:
| Konvertierungsspezifizierer | Erklärung | |
|---|---|---|
| Tag | ||
%d
%Od
|
Schreibt den Tag des Monats als Dezimalzahl. Wenn das Ergebnis eine einzelne Dezimalziffer ist, wird sie mit 0 vorangestellt.
Der modifizierte Befehl
|
|
%e
%Oe
|
Schreibt den Tag des Monats als Dezimalzahl. Wenn das Ergebnis eine einzelne Dezimalziffer ist, wird sie mit einem Leerzeichen vorangestellt.
Der modifizierte Befehl
|
|
| Wochentag | ||
%a
|
Schreibt den abgekürzten Wochentagsnamen der Lokalisierung. | |
%A
|
Schreibt den vollständigen Wochentagsnamen der Lokalisierung. | |
%u
%Ou
|
Schreibt den ISO-Wochentag als Dezimalzahl (1-7), wobei Montag
1
ist.
Der modifizierte Befehl
|
|
%w
%Ow
|
Schreibt den Wochentag als Dezimalzahl (0-6), wobei Sonntag
0
ist.
Der modifizierte Befehl
|
|
| ISO 8601 wochenbasiertes Jahr | ||
|
In ISO 8601 beginnen Wochen mit Montag und die erste Woche des Jahres muss folgende Anforderungen erfüllen:
|
||
%g
|
Schreibt die letzten beiden Dezimalstellen des ISO 8601 wochenbasierten Jahres. Wenn das Ergebnis eine einzelne Ziffer ist, wird sie mit 0 vorangestellt. | |
%G
|
Schreibt das ISO 8601 wochenbasierte Jahr als Dezimalzahl. Wenn das Ergebnis weniger als vier Stellen hat, wird es links mit 0 auf vier Stellen aufgefüllt. | |
%V
%OV
|
Schreibt die ISO 8601 Wochennummer des Jahres als Dezimalzahl. Wenn das Ergebnis eine einzelne Ziffer ist, wird sie mit 0 vorangestellt.
Der modifizierte Befehl
|
|
| Woche/Tag des Jahres | ||
%j
|
Schreibt den Tag des Jahres als Dezimalzahl (1. Januar ist
001
). Wenn das Ergebnis weniger als drei Stellen hat, wird es links mit 0 auf drei Stellen aufgefüllt.
|
|
%U
%OU
|
Schreibt die Wochennummer des Jahres als Dezimalzahl. Der erste Sonntag des Jahres ist der erste Tag der Woche 01. Tage desselben Jahres davor sind in Woche 00. Wenn das Ergebnis eine einzelne Ziffer ist, wird sie mit 0 vorangestellt.
Der modifizierte Befehl
|
|
%W
%OW
|
Schreibt die Wochennummer des Jahres als Dezimalzahl. Der erste Montag des Jahres ist der erste Tag der Woche 01. Tage desselben Jahres davor sind in Woche 00. Wenn das Ergebnis eine einzelne Ziffer ist, wird sie mit 0 vorangestellt.
Der modifizierte Befehl
|
|
| Datum | ||
%D
|
Entspricht
"%m/%d/%y"
.
|
|
%F
|
Entspricht
"%Y-%m-%d"
.
|
|
%x
%Ex
|
Schreibt die Datumsdarstellung der Lokalisierung.
Der modifizierte Befehl
|
|
| Tageszeit | ||
%H
%OH
|
Schreibt die Stunde (24-Stunden-Uhr) als Dezimalzahl. Wenn das Ergebnis eine einzelne Ziffer ist, wird sie mit 0 vorangestellt.
Der modifizierte Befehl
|
|
%I
%OI
|
Schreibt die Stunde (12-Stunden-Uhr) als Dezimalzahl. Wenn das Ergebnis eine einzelne Ziffer ist, wird sie mit 0 vorangestellt.
Der modifizierte Befehl
|
|
%M
%OM
|
Schreibt die Minute als Dezimalzahl. Wenn das Ergebnis eine einzelne Ziffer ist, wird sie mit 0 vorangestellt.
Der modifizierte Befehl
|
|
%S
%OS
|
Schreibt die Sekunde als Dezimalzahl. Wenn die Anzahl der Sekunden kleiner als 10 ist, wird das Ergebnis mit 0 vorangestellt.
Wenn die Genauigkeit der Eingabe nicht exakt mit Sekunden dargestellt werden kann, dann ist das Format eine dezimale Gleitkommazahl mit einem festen Format und einer Genauigkeit, die der Genauigkeit der Eingabe entspricht (oder mit einer Mikrosekundengenauigkeit, falls die Konvertierung in dezimale Gleitkommasekunden nicht innerhalb von 18 Nachkommastellen erfolgen kann). Das Zeichen für den Dezimalpunkt wird entsprechend der Lokalisierung angepasst.
Der modifizierte Befehl
|
|
%p
|
Schreibt die Entsprechung der AM/PM-Bezeichnungen der Lokalisierung, die mit einer 12-Stunden-Uhr assoziiert sind. | |
%R
|
Entspricht
"%H:%M"
.
|
|
%T
|
Entspricht
"%H:%M:%S"
.
|
|
%r
|
Schreibt die 12-Stunden-Uhrzeit der Lokalisierung. | |
%X
%EX
|
Schreibt die Zeitdarstellung der Lokalisierung.
Der modifizierte Befehl
|
|
| Dauerzählung | ||
%Q
|
Schreibt die Anzahl der Ticks der Dauer, d.h. den Wert, der über count() erhalten wird. | |
%q
|
Schreibt das Einheitensuffix der Dauer, wie in operator<<() spezifiziert. | |
| Zeitzone | ||
%z
%Ez
%Oz
|
Schreibt den UTC-Offset im ISO 8601-Format. Zum Beispiel bezieht sich
-0430
auf 4 Stunden 30 Minuten hinter UTC. Wenn der Offset null ist, wird
+0000
verwendet.
Die modifizierten Befehle
|
|
%Z
|
Schreibt die Zeitzonenabkürzung. | |
| Sonstiges | ||
%c
%Ec
|
Schreibt die Datums- und Zeitdarstellung der Lokalisierung.
Der modifizierte Befehl
|
|
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 | Korrektes Verhalten |
|---|---|---|---|
| P2372R3 | C++20 |
formatter
verwendete die globale Locale oder übergebene Locale
|
Standard-
"C"
Locale wird verwendet wenn
L
fehlt
|
Siehe auch
|
(C++20)
|
speichert formatierte Darstellung der Argumente in einer neuen Zeichenkette
(Funktionsschablone) |