std:: get_time
|
Definiert im Header
<iomanip>
|
||
|
template
<
class
CharT
>
/*unspecified*/ get_time ( std:: tm * tmb, const CharT * fmt ) ; |
(seit C++11) | |
Wenn in einem Ausdruck verwendet in >> get_time ( tmb, fmt ) , analysiert die Zeicheneingabe als Datums-/Zeitwert gemäß Formatzeichenkette fmt entsprechend dem std::time_get -Facette der Lokalität, die aktuell im Eingabestrom in eingebunden ist. Der resultierende Wert wird in einem std::tm -Objekt gespeichert, auf das durch tmb gezeigt wird.
Inhaltsverzeichnis |
Parameter
| tmb | - | gültiger Zeiger auf das std::tm Objekt, in dem das Ergebnis gespeichert wird | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
pointer to a null-terminated
CharT
string specifying the conversion format
Die Formatzeichenfolge besteht aus null oder mehr Konvertierungsspezifizierern, Leerzeichen und gewöhnlichen Zeichen (außer
Hinweis:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rückgabewert
Ein Objekt eines nicht näher spezifizierten Typs, sodass
-
Wenn
in
ein Objekt vom Typ
std::
basic_istream
<
CharT, Traits
>
ist, dann hat der Ausdruck
in
>>
get_time
(
tmb, fmt
)
- den Typ std:: basic_istream < CharT, Traits > &
- den Wert in
- verhält sich, als ob f ( in, tmb, fmt ) aufgerufen würde
wobei die Funktion f definiert ist als:
template<class CharT, class Traits> void f(std::basic_ios<CharT, Traits>& str, std::tm* tmb, const CharT* fmt) { using Iter = std::istreambuf_iterator<CharT, Traits>; using TimeGet = time_get<CharT, Iter>; std::ios_base::iostate err = std::ios_base::goodbit; const TimeGet& tg = std::use_facet<TimeGet>(str.getloc()); tg.get(Iter(str.rdbuf()), Iter(), str, err, tmb, fmt, fmt + Traits::length(fmt)); if (err != std::ios_base::goodbit) str.setstate(err); }
Hinweise
Wie in
std::time_get::do_get
spezifiziert, welche diese Funktion aufruft, ist es nicht spezifiziert, ob diese Funktion die Felder in
*
tmb
auf Null setzt, die nicht direkt durch die Konvertierungsspezifizierer in
fmt
gesetzt werden: portable Programme sollten jedes Feld von
*
tmb
vor dem Aufruf von
std::get_time
auf Null initialisieren.
Beispiel
Hinweis: Wählen Sie clang oder gcc >= 12.1, um die Ausgabe zu beobachten. libstdc++ vor 12.1 implementiert den % b Spezifizierer nicht korrekt: Bug #78714 .
#include <iomanip> #include <iostream> #include <locale> #include <sstream> int main() { std::tm t = {}; std::istringstream ss("2011-Februar-18 23:12:34"); ss.imbue(std::locale("de_DE.utf-8")); ss >> std::get_time(&t, "%Y-%b-%d %H:%M:%S"); if (ss.fail()) std::cout << "Parse failed\n"; else std::cout << std::put_time(&t, "%c") << '\n'; }
Mögliche Ausgabe:
Sun Feb 18 23:12:34 2011
Siehe auch
|
analysiert Zeit-/Datumsangaben aus einer Eingabezeichenfolge in
std::tm
(Klassentemplate) |
|
|
(C++11)
|
formatiert und gibt einen Zeit-/Datumswert gemäß dem angegebenen Format aus
(Funktionstemplate) |
|
(C++20)
|
analysiert ein
chrono
-Objekt aus einem Stream
(Funktionstemplate) |