std::chrono:: from_stream (std::chrono::local_time)
|
template
<
class
CharT,
class
Traits,
class
Duration,
class
Alloc
=
std::
allocator
<
CharT
>
>
std::
basic_istream
<
CharT, Traits
>
&
|
(seit C++20) | |
Versucht, den Eingabestream is in den Zeitpunkt tp gemäß dem Formatstring fmt zu parsen.
Verhält sich wie eine UnformattedInputFunction , mit der Ausnahme, dass es einen nicht spezifizierten Effekt auf is. gcount ( ) hat. Nach dem Konstruieren und Prüfen des Sentinel-Objekts wird versucht, den Eingabestrom is gemäß dem Formatstring fmt in tp zu parsen. Wenn das Parsen keinen gültigen Zeitpunkt decodieren kann, wird is. setstate ( std:: ios_base :: failbit ) aufgerufen und tp nicht modifiziert.
Wenn der Formatbezeichner
%Z
verwendet und erfolgreich geparst wird, wird der geparste Wert
*
abbrev
zugewiesen, falls
abbrev
nicht null ist. Wenn der Formatbezeichner
%z
oder eine modifizierte Variante verwendet und erfolgreich geparst wird, wird der geparste Wert
*
offset
zugewiesen, falls
offset
nicht null ist.
Inhaltsverzeichnis |
Parameter
| is | - | ein Eingabestream |
| fmt | - | eine Formatzeichenfolge (siehe unten) |
| tp | - | Zeitpunkt-Objekt zur Aufnahme des Parse-Ergebnisses |
| abbrev | - |
falls nicht null, Zeiger auf ein Objekt, das die Zeitzonenabkürzung oder den Namen entsprechend dem
%Z
Spezifizierer aufnimmt
|
| offset | - |
falls nicht null, Zeiger auf ein Objekt, das den UTC-Offset entsprechend dem
%z
Spezifizierer aufnimmt
|
Formatzeichenkette
Der Formatstring besteht aus null oder mehr Konvertierungsspezifizierern und gewöhnlichen Zeichen. Jedes gewöhnliche Zeichen, mit Ausnahme von Leerzeichen und dem abschließenden Nullzeichen, entspricht einem identischen Zeichen aus dem Eingabestrom oder führt dazu, dass die Funktion fehlschlägt, wenn das nächste Zeichen im Strom nicht gleich ist.
Jedes Leerzeichen-Zeichen passt auf null oder mehr Leerzeichen-Zeichen im Eingabestrom.
Jeder unveränderte Konvertierungsspezifizierer beginnt mit einem
%
Zeichen, gefolgt von einem Zeichen, das das Verhalten des Spezifizierers bestimmt. Einige Konvertierungsspezifizierer haben eine modifizierte Form, bei der ein
E
oder
O
Modifikatorzeichen nach dem
%
Zeichen eingefügt wird. Einige Konvertierungsspezifizierer haben eine modifizierte Form, bei der ein Breitenparameter, angegeben als positive dezimale Ganzzahl (dargestellt als
N
unten), nach dem
%
Zeichen eingefügt wird. Jeder Konvertierungsspezifizierer bewirkt, dass die übereinstimmenden Zeichen gemäß der nachfolgenden Tabelle als Teile von Datums- und Zeittypen interpretiert werden.
Eine Zeichenfolge im Formatstring, die mit einem
%
beginnt, aber nicht mit einem der unten angegebenen Konvertierungsspezifizierer übereinstimmt, wird als gewöhnliche Zeichen interpretiert.
Wenn
from_stream
nicht alles parsen kann, was durch die Formatzeichenkette spezifiziert ist, oder wenn unzureichende Informationen geparst werden, um ein vollständiges Ergebnis zu spezifizieren, oder wenn das Parsen widersprüchliche Informationen offenbart,
is.
setstate
(
std::
ios_base
::
failbit
)
wird aufgerufen.
Die folgenden Konvertierungsspezifizierer sind verfügbar:
|
Konvertierungsspezifizierer
|
Erklärung | |
|---|---|---|
%%
|
Entspricht einem wörtlichen
%
Zeichen.
|
|
%n
|
Entspricht einem Leerzeichen. | |
%t
|
Entspricht null oder einem Leerzeichen. | |
| Jahr | ||
%C
%
N
C
%EC
|
Parst das Jahrhundert als Dezimalzahl. Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite beträgt 2. Führende Nullen sind erlaubt, aber nicht erforderlich.
Der modifizierte Befehl
|
|
%y
%
N
y
%Ey
%Oy
|
Analysiert die letzten zwei Dezimalstellen des Jahres. Wenn das Jahrhundert nicht anderweitig angegeben ist (z.B. mit %C), werden Werte im Bereich [69, 99] als die Jahre 1969 bis 1999 interpretiert und Werte im Bereich [00, 68] als die Jahre 2000 bis 2068. Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite ist 2. Führende Nullen sind erlaubt, aber nicht erforderlich.
Die modifizierten Befehle
|
|
%Y
%
N
Y
%EY
|
Parst das Jahr als Dezimalzahl. Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite beträgt 4. Führende Nullen sind erlaubt, aber nicht erforderlich.
Der modifizierte Befehl
|
|
| Monat | ||
%b
%B
%h
|
Analysiert den vollständigen oder abgekürzten, groß-/kleinschreibungsunabhängigen Monatsnamen der Lokalisierung. | |
%m
%
N
m
%Om
|
Analysiert den Monat als Dezimalzahl (Januar ist
1
). Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite ist 2. Führende Nullen sind erlaubt, aber nicht erforderlich.
Der modifizierte Befehl
|
|
| Tag | ||
%d
%
N
d
%Od
%e
%
N
e
%Oe
|
Analysiert den Tag des Monats als Dezimalzahl. Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite ist 2. Führende Nullen sind erlaubt, aber nicht erforderlich.
Die modifizierten Befehle
|
|
| Wochentag | ||
%a
%A
|
Analysiert den vollständigen oder abgekürzten, groß-/kleinschreibungsunabhängigen Wochentagsnamen der Locale. | |
%u
%
N
u
|
Interpretiert den ISO-Wochentag als Dezimalzahl (1-7), wobei Montag
1
entspricht. Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite beträgt 1. Führende Nullen sind erlaubt, aber nicht erforderlich.
|
|
%w
%
N
w
%Ow
|
Analysiert den Wochentag als Dezimalzahl (0-6), wobei Sonntag
0
ist. Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite ist 1. Führende Nullen sind erlaubt, aber nicht erforderlich.
Der modifizierte Befehl
|
|
| ISO 8601 wochenbasiertes Jahr | ||
|
In ISO 8601 beginnen Wochen mit Montag und die erste Woche des Jahres muss die folgenden Anforderungen erfüllen:
|
||
%g
%
N
g
|
Analysiert die letzten zwei Dezimalstellen des ISO-8601 wochenbasierten Jahres. Die Breite N gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite beträgt 2. Führende Nullen sind erlaubt, aber nicht erforderlich. | |
%G
%
N
G
|
Analysiert das ISO-8601-wochenbasierte Jahr als Dezimalzahl. Die Breite N gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite beträgt 4. Führende Nullen sind erlaubt, aber nicht erforderlich. | |
%V
%
N
V
|
Analysiert die ISO 8601-Woche des Jahres als Dezimalzahl. Die Breite N gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite beträgt 2. Führende Nullen sind erlaubt, aber nicht erforderlich. | |
| Woche/Tag des Jahres | ||
%j
%
N
j
|
Analysiert den Tag des Jahres als Dezimalzahl (1. Januar ist
1
). Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite ist 3. Führende Nullen sind erlaubt, aber nicht erforderlich.
|
|
%U
%
N
U
%OU
|
Erfasst die Wochennummer des Jahres als Dezimalzahl. Der erste Sonntag des Jahres ist der erste Tag von Woche 01. Tage desselben Jahres davor sind in Woche 00. Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite ist 2. Führende Nullen sind erlaubt, aber nicht erforderlich.
Der modifizierte Befehl
|
|
%W
%
N
W
%OW
|
Analysiert 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. Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite ist 2. Führende Nullen sind erlaubt, aber nicht erforderlich.
Der modifizierte Befehl
|
|
| Datum | ||
%D
|
Entspricht
"%m/%d/%y"
.
|
|
%F
%
N
F
|
Entspricht
"%Y-%m-%d"
. Wenn die Breite angegeben ist, wird sie nur auf
%Y
angewendet.
|
|
%x
%Ex
|
Analysiert die lokale Datumsdarstellung.
Der modifizierte Befehl
|
|
| Tageszeit | ||
%H
%
N
H
%OH
|
Parst die Stunde (24-Stunden-Format) als Dezimalzahl. Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite ist 2. Führende Nullen sind erlaubt, aber nicht erforderlich.
Der modifizierte Befehl
|
|
%I
%
N
I
%OI
|
Parst die Stunde (12-Stunden-Format) als Dezimalzahl. Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite beträgt 2. Führende Nullen sind erlaubt, aber nicht erforderlich.
Der modifizierte Befehl
|
|
%M
%
N
M
%OM
|
Interpretiert die Minute als Dezimalzahl. Die Breite
N
gibt die maximale Anzahl der zu lesenden Zeichen an. Die Standardbreite beträgt 2. Führende Nullen sind erlaubt, aber nicht erforderlich.
Der modifizierte Befehl
|
|
%S
%
N
S
%OS
|
Parst die Sekunde als Dezimalzahl. Die Breite
N
gibt die maximale Anzahl zu lesender Zeichen an. Die Standardbreite beträgt 2, wenn
Duration
in
std::chrono::seconds
konvertierbar ist, andernfalls wird sie durch die Dezimalpräzision von
Duration
bestimmt und das Feld wird als long double in einem Festkommaformat interpretiert, wobei das Dezimaltrennzeichen durch das Gebietsschema bestimmt wird (falls vorhanden). Führende Nullen sind erlaubt, aber nicht erforderlich.
Der modifizierte Befehl
|
|
%p
|
Analysiert die lokalen Entsprechungen der AM/PM-Bezeichnungen, die mit einer 12-Stunden-Uhr assoziiert sind. | |
%R
|
Entspricht
"%H:%M"
.
|
|
%T
|
Entspricht
"%H:%M:%S"
.
|
|
%r
|
Interpretiert die 12-Stunden-Uhrzeit der jeweiligen Locale. | |
%X
%EX
|
Analysiert die zeitliche Darstellung des Gebietsschemas.
Der modifizierte Befehl
|
|
| Sonstiges | ||
%c
%Ec
|
Analysiert die lokale Datums- und Zeitdarstellung.
Der modifizierte Befehl
|
|
%z
%Ez
%Oz
|
Analysiert den UTC-Offset im Format
[+|-]hh[mm]
. Zum Beispiel bezieht sich
-0430
auf 4 Stunden 30 Minuten hinter UTC und
04
bezieht sich auf 4 Stunden vor UTC.
Die modifizierten Befehle
|
|
%Z
|
Parst die Zeitzonenabkürzung oder den Namen, aufgenommen als die längste Zeichenfolge, die nur die Zeichen
A
bis
Z
,
a
bis
z
,
0
bis
9
,
-
,
+
,
_
und
/
enthält.
|
|
Rückgabewert
is
Hinweise
Diese Überladung subtrahiert nicht den geparsten Offset (falls vorhanden) vom geparsten Zeitstempel, anders als die
from_stream
Überladungen für die
time_point
anderer Uhren.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
(C++20)
|
parst ein
chrono
-Objekt aus einem Stream
(Funktions-Template) |