Difference between revisions of "cpp/locale/time get"
m (Text replace - "{{tdcl list end" to "{{dcl list end") |
Andreas Krug (Talk | contribs) m (fmt, ., headers sorted) |
||
(20 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
− | {{cpp/title | time_get}} | + | {{cpp/title|time_get}} |
− | {{cpp/locale/time_get/ | + | {{cpp/locale/time_get/navbar}} |
− | {{ | + | {{dcl begin}} |
− | {{ | + | {{dcl header|locale}} |
− | {{ | + | {{dcl|1= |
− | template< class | + | template< |
− | class time_get | + | class CharT, |
+ | class InputIt = std::istreambuf_iterator<CharT> | ||
+ | > class time_get; | ||
}} | }} | ||
− | {{ | + | {{dcl end}} |
− | Class template {{tt|std::time_get}} encapsulates date and time parsing rules. The I/O manipulator {{ | + | Class template {{tt|std::time_get}} encapsulates date and time parsing rules. The I/O manipulator {{lc|std::get_time}} uses the {{tt|std::time_get}} facet of the I/O stream's locale to convert text input to a {{lc|std::tm}} object. |
− | + | {{inheritance diagram/std-time_get}} | |
− | {{ | + | If a {{tt|std::time_get}} specialization is not guaranteed to be provided by the standard library (see below), the behaviors of its member functions (except the constructor and destructor) are not guaranteed as specified. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | === | + | ===Specializations=== |
− | {{ | + | The standard library is guaranteed to provide the following specializations (they are {{rlp|locale|required to be implemented by any locale object}}): |
− | {{ | + | {{dsc begin}} |
− | {{ | + | {{dsc header|locale}} |
− | {{ | + | {{dsc|{{c/core|std::time_get<char>}}|parses narrow string representations of date and time}} |
− | {{ | + | {{dsc|{{c/core|std::time_get<wchar_t>}}|parses wide string representations of date and time}} |
+ | {{dsc end}} | ||
− | ===Member | + | In addition, the standard library is also guaranteed to provide every specialization that satisfies the following type requirements: |
− | {{ | + | * {{tt|CharT}} is one of {{c/core|char}} and {{c/core|wchar_t}}, and |
− | {{ | + | * {{tt|InputIt}} must meet the requirements of {{named req|InputIterator}}. |
− | {{ | + | |
− | {{ | + | ===Member types=== |
+ | {{dsc begin}} | ||
+ | {{dsc hitem|Member type|Definition}} | ||
+ | {{dsc|{{tt|char_type}}|{{tt|CharT}}}} | ||
+ | {{dsc|{{tt|iter_type}}|{{tt|InputIt}}}} | ||
+ | {{dsc end}} | ||
===Member functions=== | ===Member functions=== | ||
− | {{ | + | {{dsc begin}} |
− | {{ | + | {{dsc mem ctor|cpp/locale/time_get/time_get|constructs a new {{tt|time_get}} facet}} |
− | {{ | + | {{dsc prot mem dtor|cpp/locale/time_get/~time_get|destructs a {{tt|time_get}} facet}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc date_order}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc get_time}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc get_date}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc get_weekday}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc get_monthname}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc get_year}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc get}} |
− | {{ | + | {{dsc end}} |
+ | |||
+ | ===Member objects=== | ||
+ | {{dsc begin}} | ||
+ | {{dsc mem obj|nolink=true|{{dsc small|static std::locale::id}} id|''id'' of the locale}} | ||
+ | {{dsc end}} | ||
===Protected member functions=== | ===Protected member functions=== | ||
− | {{ | + | {{dsc begin}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc do_date_order}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc do_get_time}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc do_get_date}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc do_get_weekday}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc do_get_monthname}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc do_get_year}} |
− | {{ | + | {{dsc inc|cpp/locale/time_get/dsc do_get}} |
− | {{ | + | {{dsc end}} |
− | {{ inherited | {{small|std::}}time_base | | + | {{inherited|{{small|std::}}time_base| |
− | {{ | + | {{dsc begin}} |
− | {{ | + | {{dsc hitem|Type|Definition}} |
− | {{ | + | {{dsc|{{tt|dateorder}}|date order enumeration type, defining the values {{tt|no_order}}, {{tt|dmy}}, {{tt|mdy}}, {{tt|ymd}}, and {{tt|ydm}}}} |
− | {{ | + | {{dsc end}} |
}} | }} | ||
− | |||
===Example=== | ===Example=== | ||
− | |||
{{example | {{example | ||
− | + | |1=Note: choose clang to observe the output. libstdc++ does not correctly implement the %b specifier: [https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78714 bug 78714]. | |
− | + | |code= | |
+ | #include <iomanip> | ||
#include <iostream> | #include <iostream> | ||
− | |||
− | |||
#include <locale> | #include <locale> | ||
− | #include < | + | #include <sstream> |
− | + | ||
int main() | int main() | ||
{ | { | ||
− | std:: | + | std::tm t = {}; |
− | + | std::istringstream ss("2011-Februar-18 23:12:34"); | |
− | + | ss.imbue(std::locale("de_DE.utf-8")); | |
− | ss.imbue(std::locale("de_DE")); | + | |
− | ss >> std::get_time(&t, | + | ss >> std::get_time(&t, "%Y-%b-%d %H:%M:%S"); |
− | std::cout << std:: | + | if (ss.fail()) |
+ | std::cout << "Parse failed\n"; | ||
+ | else | ||
+ | std::cout << std::put_time(&t, "%c") << '\n'; | ||
} | } | ||
− | + | |p=true | |
+ | |output= | ||
Sun Feb 18 23:12:34 2011 | Sun Feb 18 23:12:34 2011 | ||
}} | }} | ||
===See also=== | ===See also=== | ||
− | {{ | + | {{dsc begin}} |
− | {{ | + | {{dsc inc|cpp/locale/dsc time_put}} |
− | {{ | + | {{dsc inc|cpp/io/manip/dsc get_time}} |
− | {{ | + | {{dsc end}} |
+ | |||
+ | {{langlinks|de|es|fr|it|ja|pt|ru|zh}} |
Latest revision as of 09:31, 6 October 2023
Defined in header <locale>
|
||
template< class CharT, |
||
Class template std::time_get
encapsulates date and time parsing rules. The I/O manipulator std::get_time uses the std::time_get
facet of the I/O stream's locale to convert text input to a std::tm object.
Inheritance diagram
If a std::time_get
specialization is not guaranteed to be provided by the standard library (see below), the behaviors of its member functions (except the constructor and destructor) are not guaranteed as specified.
Contents |
[edit] Specializations
The standard library is guaranteed to provide the following specializations (they are required to be implemented by any locale object):
Defined in header
<locale> | |
std::time_get<char> | parses narrow string representations of date and time |
std::time_get<wchar_t> | parses wide string representations of date and time |
In addition, the standard library is also guaranteed to provide every specialization that satisfies the following type requirements:
-
CharT
is one of char and wchar_t, and -
InputIt
must meet the requirements of LegacyInputIterator.
[edit] Member types
Member type | Definition |
char_type
|
CharT
|
iter_type
|
InputIt
|
[edit] Member functions
constructs a new time_get facet (public member function) | |
destructs a time_get facet (protected member function) | |
invokes do_date_order (public member function) | |
invokes do_get_time (public member function) | |
invokes do_get_date (public member function) | |
invokes do_get_weekday (public member function) | |
invokes do_get_monthname (public member function) | |
invokes do_get_year (public member function) | |
(C++11) |
invokes do_get (public member function) |
[edit] Member objects
static std::locale::id id |
id of the locale (public member object) |
[edit] Protected member functions
[virtual] |
obtains preferred ordering of day, month, and year (virtual protected member function) |
[virtual] |
extracts hours, minutes, and seconds from input stream (virtual protected member function) |
[virtual] |
extracts month, day, and year from input stream (virtual protected member function) |
[virtual] |
extracts the name of a day of the week from input stream (virtual protected member function) |
[virtual] |
extracts a month name from input stream (virtual protected member function) |
[virtual] |
extracts a year from input stream (virtual protected member function) |
[virtual] (C++11) |
extracts date/time components from input stream, according to the specified format (virtual protected member function) |
Inherited from std::time_base
Type | Definition |
dateorder
|
date order enumeration type, defining the values no_order , dmy , mdy , ymd , and ydm
|
[edit] Example
Note: choose clang to observe the output. libstdc++ does not correctly implement the %b specifier: 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'; }
Possible output:
Sun Feb 18 23:12:34 2011
[edit] See also
formats contents of std::tm for output as character sequence (class template) | |
(C++11) |
parses a date/time value of specified format (function template) |