Namespaces
Variants

std::chrono:: parse

From cppreference.net
(Anmerkung: Der bereitgestellte HTML-Code enthält keinen übersetzbaren Text, da alle Tags leer sind. Die Struktur wurde gemäß den Anforderungen unverändert beibehalten.)
Definiert in Header <chrono>
template < class CharT, class Parsable >
/* nicht spezifiziert */ parse ( const CharT * fmt, Parsable & tp ) ;
(1) (seit C++20)
template < class CharT, class Traits, class Alloc, class Parsable >

/* nicht spezifiziert */ parse ( const std:: basic_string < CharT, Traits, Alloc > & fmt,

Parsable & tp ) ;
(2) (seit C++20)
template < class CharT, class Traits, class Alloc, class Parsable >

/* nicht spezifiziert */ parse ( const CharT * fmt, Parsable & tp,

std:: basic_string < CharT, Traits, Alloc > & abbrev ) ;
(3) (seit C++20)
template < class CharT, class Traits, class Alloc, class Parsable >

/* nicht spezifiziert */ parse ( const std:: basic_string < CharT, Traits, Alloc > & fmt,
Parsable & tp,

std:: basic_string < CharT, Traits, Alloc > & abbrev ) ;
(4) (seit C++20)
template < class CharT, class Parsable >

/* nicht spezifiziert */ parse ( const CharT * fmt, Parsable & tp,

std:: chrono :: minutes & offset ) ;
(5) (seit C++20)
template < class CharT, class Traits, class Alloc, class Parsable >

/* nicht spezifiziert */ parse ( const std:: basic_string < CharT, Traits, Alloc > & fmt,

Parsable & tp, std:: chrono :: minutes & offset ) ;
(6) (seit C++20)
template < class CharT, class Traits, class Alloc, class Parsable >

/* nicht spezifiziert */ parse ( const CharT * fmt, Parsable & tp,
std:: basic_string < CharT, Traits, Alloc > & abbrev,

std:: chrono :: minutes & offset ) ;
(7) (seit C++20)
template < class CharT, class Traits, class Alloc, class Parsable >

/* nicht spezifiziert */ parse ( const std:: basic_string < CharT, Traits, Alloc > & fmt,
Parsable & tp,
std:: basic_string < CharT, Traits, Alloc > & abbrev,

std:: chrono :: minutes & offset ) ;
(8) (seit C++20)

Gibt ein Objekt manip eines nicht näher spezifizierten Typs zurück, sodass für ein std:: basic_istream < CharT, Traits > -Objekt is der Ausdruck is >> manip from_stream (unqualifiziert, um argumentabhängige Namenssuche zu ermöglichen) wie folgt aufruft:

1) from_stream ( is, fmt, tp )
2) from_stream ( is, fmt. c_str ( ) , tp )
3) from_stream ( is, fmt, tp, std:: addressof ( abbrev ) )
4) from_stream ( is, fmt. c_str ( ) , tp, std:: addressof ( abbrev ) )
5) from_stream ( is, fmt, tp,
static_cast < std:: basic_string < CharT, Traits, Alloc > * > ( nullptr ) , & offset )
6) from_stream ( is, fmt. c_str ( ) , tp,
static_cast < std:: basic_string < CharT, Traits, Alloc > * > ( nullptr ) , & offset )
7) from_stream ( is, fmt, tp, std:: addressof ( abbrev ) , & offset )
8) from_stream ( is, fmt. c_str ( ) , tp, std:: addressof ( abbrev ) , & offset ) .

Der Ausdruck is >> manip ist ein L-Wert vom Typ std:: basic_istream < CharT, Traits > mit dem Wert is .

Diese Überladungen nehmen nur dann an der Überladungsauflösung teil, wenn der entsprechende from_stream Ausdruck wohlgeformt ist.

Implementierungen wird empfohlen, die Verwendung potenziell hängender Referenzen auf die Formatzeichenfolge zu erschweren, z.B. durch nicht bewegliche Rückgabetypen und durch Verhinderung, operator >> lvalues von Rückgabetypen zu akzeptieren.

Inhaltsverzeichnis

Parameter

fmt - eine Formatzeichenfolge (siehe unten)
tp - Objekt zur Aufnahme des Analyseergebnisses
abbrev - Zeichenfolge zur Aufnahme der Zeitzonenabkürzung oder des Namens entsprechend dem %Z Spezifizierer
offset - Dauer zur Darstellung des UTC-Offsets entsprechend dem %z Spezifizierer

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 nachstehenden Tabelle als Teile von Datums- und Zeittypen interpretiert werden.

Eine Zeichenfolge im Formatstring, die mit einem % beginnt, aber nicht mit einem der unten aufgeführten Konvertierungsspezifizierer übereinstimmt, wird als gewöhnliche Zeichen interpretiert.

Wenn from_stream nicht alles parsen kann, was durch die Formatzeichenfolge 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 %EC interpretiert die alternative Darstellung des Jahrhunderts gemäß der Locale-Einstellung.

%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 %Ey und %Oy interpretieren die alternative Darstellung der Locale.

%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 %EY interpretiert die alternative Darstellung des Gebietsschemas.

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 %Om interpretiert die alternative Darstellung des Gebietsschemas.

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 beträgt 2. Führende Nullen sind erlaubt, aber nicht erforderlich.

Die modifizierten Befehle %Od und %Oe interpretieren die alternative Darstellung der Locale.

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 %Ow interpretiert die alternative Darstellung der Locale.

ISO 8601 wochenbasiertes Jahr

In ISO 8601 beginnen Wochen mit Montag und die erste Woche des Jahres muss die folgenden Anforderungen erfüllen:

  • Beinhaltet den 4. Januar
  • Beinhaltet den ersten Donnerstag des Jahres
%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 die ISO 8601 wochenbasierte Jahreszahl 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-Kalenderwoche 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
Analysiert 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 %OU interpretiert die alternative Darstellung des Gebietsschemas.

%W
% N W
%OW
Analysiert die Wochennummer des Jahres als Dezimalzahl. Der erste Montag 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 %OW interpretiert die alternative Darstellung des Gebietsschemas.

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 %Ex interpretiert die alternative Datumsdarstellung des Gebietsschemas.

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 %OH interpretiert die alternative Darstellung des Gebietsschemas.

%I
% N I
%OI
Erfasst 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 %OI interpretiert die alternative Darstellung des Gebietsschemas.

%M
% N M
%OM
Analysiert die Minute 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 %OM interpretiert die alternative Darstellung des Gebietsschemas.

%S
% N S
%OS
Parst die Sekunde als Dezimalzahl. Die Breite N gibt die maximale Anzahl zu lesender Zeichen an. Die Standardbreite ist 2. Führende Nullen sind erlaubt, aber nicht erforderlich.

Der modifizierte Befehl %OS interpretiert die alternative Darstellung des Gebietsschemas.

%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 Analysiert die 12-Stunden-Uhrzeit der jeweiligen Locale.
%X
%EX
Analysiert die Zeitdarstellung des Gebietsschemas.

Der modifizierte Befehl %EX interpretiert die alternative Zeitdarstellung des Gebietsschemas.

Sonstiges
%c
%Ec
Analysiert die lokale Datums- und Zeitdarstellung.

Der modifizierte Befehl %Ec interpretiert die alternative lokale Datums- und Zeitdarstellung.

%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 %Ez und %Oz analysieren das Format [+|-]h[h][:mm] (d.h. sie erfordern einen : zwischen Stunden und Minuten und machen die führende Null für die Stunde optional).

%Z Analysiert 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.

Beispiel

#include <chrono>
#include <iostream>
#include <locale>
#include <sstream>
int main()
{
    auto parse = [&](auto str, auto fmt, auto o)
    {
        std::istringstream is{str};
        is.imbue(std::locale("en_US.utf-8"));
        is >> std::chrono::parse(fmt, o);
        is.fail() ? std::cout << "Parse failed!\n" : std::cout << o << '\n';
    };
    parse("01:02:03", "%H:%M:%S", std::chrono::hours{});
    parse("01:02:03", "%H:%M:%S", std::chrono::minutes{});
    parse("01:02:03", "%H:%M:%S", std::chrono::seconds{});
}

Mögliche Ausgabe:

1h
62min
3723s

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 3554 C++20 Overloads für einfache nullterminierte Zeichentyp-Sequenzen fehlten hinzugefügt

Siehe auch

analysiert einen sys_time aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
analysiert einen utc_time aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
analysiert einen tai_time aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
analysiert einen gps_time aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
analysiert einen file_time aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
analysiert einen local_time aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
analysiert ein year aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
analysiert einen month aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
analysiert einen day aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
analysiert einen weekday aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
analysiert einen month_day aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
analysiert einen year_month aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
analysiert einen year_month_day aus einem Stream gemäß dem angegebenen Format
(Funktions-Template)
(C++11)
analysiert einen Datums-/Zeitwert im angegebenen Format
(Funktions-Template)