STD::TIME_GET(3cxx)

πŸ•°οΈ std::time_get< _CharT, _InIter >(3cxx) β€” manual page, bestie πŸ’…

✨ NAME ✨

std::time_get< _CharT, _InIter > β€” Primary class template time_get. That’s the whole vibe: it’s the locale facet that parses dates and times out of strings, and it’s lowkey iconic. πŸŽ€

πŸ¦‹ SYNOPSIS πŸ¦‹

#include <locale>

Inherits std::locale::facet, and std::time_base.

Inherited by std::time_get_byname< _CharT, _InIter >.

πŸ’– Public Types πŸ’–

  • enum dateorder { no_order, dmy, mdy, ymd, ydm }
  • typedef _CharT char_type β€” Public typedefs.
  • typedef _InIter iter_type β€” Public typedefs.

🌸 Public Member Functions 🌸

  • time_get (size_t __refs=0) β€” Constructor performs initialization.
  • dateorder date_order () const β€” Return preferred order of month, day, and year.
  • iter_type get (iter_type __s, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm, char __format, char __modifier=0) const β€” Parse input string according to format.
  • iter_type get (iter_type __s, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm, const char_type *__fmt, const char_type *__fmtend) const β€” Parse input string according to format.
  • iter_type get_date (iter_type __beg, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm) const β€” Parse input date string.
  • iter_type get_monthname (iter_type __beg, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm) const β€” Parse input month string.
  • iter_type get_time (iter_type __beg, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm) const β€” Parse input time string.
  • iter_type get_weekday (iter_type __beg, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm) const β€” Parse input weekday string.
  • iter_type get_year (iter_type __beg, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm) const β€” Parse input year string.

πŸ‘‘ Static Public Attributes πŸ‘‘

  • static locale::id id β€” Numpunct facet id.

🧚 Protected Member Functions 🧚

  • virtual ~time_get () β€” Destructor.
  • iter_type _M_extract_name (iter_type __beg, iter_type __end, int &__member, const _CharT **__names, size_t __indexlen, ios_base &__io, ios_base::iostate &__err) const
  • iter_type _M_extract_num (iter_type __beg, iter_type __end, int &__member, int __min, int __max, size_t __len, ios_base &__io, ios_base::iostate &__err) const
  • iter_type _M_extract_via_format (iter_type __beg, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm, const _CharT *__format) const
  • iter_type _M_extract_via_format (iter_type __beg, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm, const _CharT *__format, __time_get_state &__state) const
  • iter_type _M_extract_wday_or_month (iter_type __beg, iter_type __end, int &__member, const _CharT **__names, size_t __indexlen, ios_base &__io, ios_base::iostate &__err) const
  • virtual dateorder do_date_order () const β€” Return preferred order of month, day, and year.
  • iter_type do_get (iter_type __s, iter_type __end, ios_base &__f, ios_base::iostate &__err, tm *__tm, char __format, char __modifier) const β€” Parse input string according to format.
  • virtual iter_type do_get_date (iter_type __beg, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm) const β€” Parse input date string.
  • virtual iter_type do_get_monthname (iter_type __beg, iter_type __end, ios_base &, ios_base::iostate &__err, tm *__tm) const β€” Parse input month string.
  • virtual iter_type do_get_time (iter_type __beg, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm) const β€” Parse input time string.
  • virtual iter_type do_get_weekday (iter_type __beg, iter_type __end, ios_base &, ios_base::iostate &__err, tm *__tm) const β€” Parse input weekday string.
  • virtual iter_type do_get_year (iter_type __beg, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm) const β€” Parse input year string.

πŸ“ Static Protected Member Functions πŸ“

  • static __c_locale _S_clone_c_locale (__c_locale &__cloc) throw ()
  • static void _S_create_c_locale (__c_locale &__cloc, const char *__s, __c_locale __old=0)
  • static void _S_destroy_c_locale (__c_locale &__cloc)
  • static __c_locale _S_get_c_locale ()
  • static const char * _S_get_c_name () throw ()
  • static __c_locale _S_lc_ctype_c_locale (__c_locale __cloc, const char *__s)

🌈 Detailed Description 🌈

template<typename _CharT, typename _InIter>
class std::time_get< _CharT, _InIter >

Primary class template time_get.

This facet encapsulates the code to parse and return a date or time from a string. It is used by the istream numeric extraction operators.

The time_get template uses protected virtual functions to provide the actual results. The public accessors forward the call to the virtual functions. These virtual functions are hooks for developers to implement the behavior they require from the time_get facet. No cap. 🫢

πŸŽ€ Member Typedef Documentation πŸŽ€

  • template<typename _CharT , typename _InIter > typedef _CharT std::time_get< _CharT, _InIter >::char_type β€” Public typedefs.
  • template<typename _CharT , typename _InIter > typedef _InIter std::time_get< _CharT, _InIter >::iter_type β€” Public typedefs.

πŸ’œ Constructor & Destructor Documentation πŸ’œ

template<typename _CharT , typename _InIter > std::time_get< _CharT, _InIter >::time_get (size_t __refs = 0) [inline], [explicit]

Constructor performs initialization. This is the constructor provided by the standard.

Parameters

  • __refs β€” Passed to the base facet class.

template<typename _CharT , typename _InIter > virtual std::time_get< _CharT, _InIter >::~time_get () [inline], [protected], [virtual]

Destructor.

🌟 Member Function Documentation 🌟

template<typename _CharT , typename _InIter > dateorder std::time_get< _CharT, _InIter >::date_order () const [inline]

Return preferred order of month, day, and year. This function returns an enum from time_base::dateorder giving the preferred ordering if the format x given to time_put::put() only uses month, day, and year. If the format x for the associated locale uses other fields, this function returns time_base::dateorder::noorder.

NOTE: The library always returns noorder at the moment. πŸ’€

Returns

  • A member of time_base::dateorder.

References

  • std::time_get< _CharT, _InIter >::do_date_order().

template<typename _CharT , typename _InIter > _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 time_base::dateorder std::time_get< _CharT, _InIter >::do_date_order () const [protected], [virtual]

Return preferred order of month, day, and year. This function returns an enum from time_base::dateorder giving the preferred ordering if the format x given to time_put::put() only uses month, day, and year. This function is a hook for derived classes to change the value returned.

Returns

  • A member of time_base::dateorder.

Referenced by

  • std::time_get< _CharT, _InIter >::date_order().

template<typename _CharT , typename _InIter > _InIter std::time_get< _CharT, _InIter >::do_get (iter_type __s, iter_type __end, ios_base & __f, ios_base::iostate & __err, tm * __tm, char __format, char __modifier) const [inline], [protected]

Parse input string according to format. This function parses the string according to the provided format and optional modifier. This function is a hook for derived classes to change the value returned.

See also

  • get() for more details.

Parameters

  • __s β€” Start of string to parse.
  • __end β€” End of string to parse.
  • __f β€” Source of the locale.
  • __err β€” Error flags to set.
  • __tm β€” Pointer to struct tm to fill in.
  • __format β€” Format specifier.
  • __modifier β€” Format modifier.

Returns

  • Iterator to first char not parsed.

References

  • std::ios_base::_M_getloc(), std::ios_base::eofbit, std::ios_base::goodbit, and std::__ctype_abstract_base< _CharT >::widen().

Referenced by

  • std::time_get< _CharT, _InIter >::get(), and std::time_get< _CharT, _InIter >::get().

template<typename _CharT , typename _InIter > _InIter std::time_get< _CharT, _InIter >::do_get_date (iter_type __beg, iter_type __end, ios_base & __io, ios_base::iostate & __err, tm * __tm) const [protected], [virtual]

Parse input date string. This function parses a date according to the format X and puts the results into a user-supplied struct tm. This function is a hook for derived classes to change the value returned.

See also

  • get_date() for details.

Parameters

  • __beg β€” Start of string to parse.
  • __end β€” End of string to parse.
  • __io β€” Source of the locale.
  • __err β€” Error flags to set.
  • __tm β€” Pointer to struct tm to fill in.

Returns

  • Iterator to first char beyond date string.

References

  • std::ios_base::_M_getloc(), and std::ios_base::eofbit.

Referenced by

  • std::time_get< _CharT, _InIter >::get_date().

template<typename _CharT , typename _InIter > _InIter std::time_get< _CharT, _InIter >::do_get_monthname (iter_type __beg, iter_type __end, ios_base & __io, ios_base::iostate & __err, tm * __tm) const [protected], [virtual]

Parse input month string. This function parses a month name and puts the results into a user-supplied struct tm. This function is a hook for derived classes to change the value returned.

See also

  • get_monthname() for details.

Parameters

  • __beg β€” Start of string to parse.
  • __end β€” End of string to parse.
  • __io β€” Source of the locale.
  • __err β€” Error flags to set.
  • __tm β€” Pointer to struct tm to fill in.

Returns

  • Iterator to first char beyond month name.

References

  • std::ios_base::_M_getloc(), std::ios_base::eofbit, std::ios_base::failbit, and std::ios_base::goodbit.

Referenced by

  • std::time_get< _CharT, _InIter >::get_monthname().

template<typename _CharT , typename _InIter > _InIter std::time_get< _CharT, _InIter >::do_get_time (iter_type __beg, iter_type __end, ios_base & __io, ios_base::iostate & __err, tm * __tm) const [protected], [virtual]

Parse input time string. This function parses a time according to the format x and puts the results into a user-supplied struct tm. This function is a hook for derived classes to change the value returned.

See also

  • get_time() for details.

Parameters

  • __beg β€” Start of string to parse.
  • __end β€” End of string to parse.
  • __io β€” Source of the locale.
  • __err β€” Error flags to set.
  • __tm β€” Pointer to struct tm to fill in.

Returns

  • Iterator to first char beyond time string.

References

  • std::ios_base::_M_getloc(), and std::ios_base::eofbit.

Referenced by

  • std::time_get< _CharT, _InIter >::get_time().

πŸ¦‹ do_get_weekday β€” the protected hook

template<typename _CharT , typename _InIter >
_InIter std::time_get< _CharT, _InIter >::do_get_weekday(iter_type __beg, iter_type __end,
    ios_base& __io, ios_base::iostate& __err, tm* __tm) const

[protected], [virtual]

Okay so this is the one that parses a weekday name out of your input string and drops the results into a user-supplied struct tm ✨. It's a hook for derived classes to change the value returned β€” so if you're subclassing, this is your moment, bestie, main character energy fr fr.

See also: get_weekday() for the full deets πŸ‘€

Parameters:

  • __beg β€” start of string to parse.
  • __end β€” end of string to parse.
  • __io β€” source of the locale.
  • __err β€” error flags to set.
  • __tm β€” pointer to struct tm to fill in.

Returns: iterator to the first char beyond the weekday name 🎯

References: std::ios_base::_M_getloc(), std::ios_base::eofbit, std::ios_base::failbit, and std::ios_base::goodbit.

Referenced by: std::time_get< _CharT, _InIter >::get_weekday().


🌸 do_get_year β€” the other protected hook

template<typename _CharT , typename _InIter >
_InIter std::time_get< _CharT, _InIter >::do_get_year(iter_type __beg, iter_type __end,
    ios_base& __io, ios_base::iostate& __err, tm* __tm) const

[protected], [virtual]

This one reads up to 4 characters to parse a year string and pops the results into a user-supplied struct tm πŸ’–. Same deal as before: it's a hook for derived classes to change the value returned.

See also: get_year() for details 🫢

Parameters:

  • __beg β€” start of string to parse.
  • __end β€” end of string to parse.
  • __io β€” source of the locale.
  • __err β€” error flags to set.
  • __tm β€” pointer to struct tm to fill in.

Returns: iterator to the first char beyond the year ⭐

References: std::ios_base::_M_getloc(), std::ios_base::eofbit, std::ios_base::failbit, std::ios_base::goodbit, and std::__ctype_abstract_base< _CharT >::narrow().

Referenced by: std::time_get< _CharT, _InIter >::get_year().


πŸŽ€ get β€” the char __format version

template<typename _CharT , typename _InIter >
iter_type std::time_get< _CharT, _InIter >::get(iter_type __s, iter_type __end,
    ios_base& __io, ios_base::iostate& __err, tm* __tm,
    char __format, char __modifier = 0) const

[inline]

Parses your input string according to a format, and it literally just calls time_get::do_get with the provided parameters. Short king behavior, no notes πŸ’…

See also: do_get() and get() πŸ‘‘

Parameters:

  • __s β€” start of string to parse.
  • __end β€” end of string to parse.
  • __io β€” source of the locale.
  • __err β€” error flags to set.
  • __tm β€” pointer to struct tm to fill in.
  • __format β€” format specifier.
  • __modifier β€” format modifier (defaults to 0).

Returns: iterator to the first char not parsed.

References: std::time_get< _CharT, _InIter >::do_get().


🌈 get β€” the format-string version

template<typename _CharT , typename _InIter >
iter_type std::time_get< _CharT, _InIter >::get(iter_type __s, iter_type __end,
    ios_base& __io, ios_base::iostate& __err, tm* __tm,
    const char_type* __fmt, const char_type* __fmtend) const

[inline]

This is the big one, and it's giving reverse-engineering icon: it parses the input string according to a provided format string, which means it does the inverse of time_put::put πŸ”₯. Your format string follows the format specified for strftime(3) / strptime(3), and the actual parsing is done by time_get::do_get.

Parameters:

  • __s β€” start of string to parse.
  • __end β€” end of string to parse.
  • __io β€” source of the locale.
  • __err β€” error flags to set.
  • __tm β€” pointer to struct tm to fill in.
  • __fmt β€” start of the format string.
  • __fmtend β€” end of the format string.

Returns: iterator to the first char not parsed.

References: std::ios_base::_M_getloc(), std::time_get< _CharT, _InIter >::do_get(), std::ios_base::eofbit, std::ios_base::failbit, std::ios_base::goodbit, std::__ctype_abstract_base< _CharT >::is(), std::__ctype_abstract_base< _CharT >::narrow(), std::__ctype_abstract_base< _CharT >::tolower(), and std::__ctype_abstract_base< _CharT >::toupper().


🧚 get_date β€” format x supremacy

template<typename _CharT , typename _InIter >
iter_type std::time_get< _CharT, _InIter >::get_date(iter_type __beg, iter_type __end,
    ios_base& __io, ios_base::iostate& __err, tm* __tm) const

[inline]

Parses a date according to the format x and puts the results into your user-supplied struct tm. The result comes back via time_get::do_get_date() 🎯

Okay so here's the vibe check on what happens πŸ’€ β€” if there's a valid date string according to format x, tm gets filled in accordingly and the returned iterator points to the first character beyond the date string. If an error occurs before the end, err |= ios_base::failbit. If parsing reads all the characters, err |= ios_base::eofbit.

Parameters:

  • __beg β€” start of string to parse.
  • __end β€” end of string to parse.
  • __io β€” source of the locale.
  • __err β€” error flags to set.
  • __tm β€” pointer to struct tm to fill in.

Returns: iterator to the first char beyond the date string.

References: std::time_get< _CharT, _InIter >::do_get_date().


πŸ“ get_monthname β€” abbreviations first, obvs

template<typename _CharT , typename _InIter >
iter_type std::time_get< _CharT, _InIter >::get_monthname(iter_type __beg, iter_type __end,
    ios_base& __io, ios_base::iostate& __err, tm* __tm) const

[inline]

Parses a month name into your user-supplied struct tm, result returned by calling time_get::do_get_monthname() 🌸

The way parsing works: it starts by parsing an abbreviated month name. If a valid abbreviation is followed by a character that would lead to the full month name, parsing continues until the full name is found or an error occurs. Otherwise parsing finishes at the end of the abbreviated name ✨

If an error occurs before the end, err |= ios_base::failbit. If parsing reads all the characters, err |= ios_base::eofbit.

Parameters:

  • __beg β€” start of string to parse.
  • __end β€” end of string to parse.
  • __io β€” source of the locale.
  • __err β€” error flags to set.
  • __tm β€” pointer to struct tm to fill in.

Returns: iterator to the first char beyond the month name.

References: std::time_get< _CharT, _InIter >::do_get_monthname().


πŸ¦‹ get_time β€” format X, not the other X

template<typename _CharT , typename _InIter >
iter_type std::time_get< _CharT, _InIter >::get_time(iter_type __beg, iter_type __end,
    ios_base& __io, ios_base::iostate& __err, tm* __tm) const

[inline]

Parses a time according to the format X into your user-supplied struct tm. Result is returned by calling time_get::do_get_time() πŸ’œ

Valid time string according to format X? Then tm gets filled in accordingly and the returned iterator points to the first character beyond the time string. Error before the end? err |= ios_base::failbit. Parsing reads all the characters? err |= ios_base::eofbit.

Parameters:

  • __beg β€” start of string to parse.
  • __end β€” end of string to parse.
  • __io β€” source of the locale.
  • __err β€” error flags to set.
  • __tm β€” pointer to struct tm to fill in.

Returns: iterator to the first char beyond the time string.

References: std::time_get< _CharT, _InIter >::do_get_time().


⭐ get_weekday β€” the public-facing one

template<typename _CharT , typename _InIter >
iter_type std::time_get< _CharT, _InIter >::get_weekday(iter_type __beg, iter_type __end,
    ios_base& __io, ios_base::iostate& __err, tm* __tm) const

[inline]

Parses a weekday name into your user-supplied struct tm, with the result returned by calling time_get::do_get_weekday() 🫢

Same abbreviation dance as month names, ngl: parsing starts with an abbreviated weekday name. If a valid abbreviation is followed by a character that would lead to the full weekday name, parsing continues until the full name is found or an error occurs. Otherwise parsing finishes at the end of the abbreviated name πŸŽ€

Error before the end β†’ err |= ios_base::failbit. Parsing reads all the characters β†’ err |= ios_base::eofbit.

Parameters:

  • __beg β€” start of string to parse.
  • __end β€” end of string to parse.
  • __io β€” source of the locale.
  • __err β€” error flags to set.
  • __tm β€” pointer to struct tm to fill in.

Returns: iterator to the first char beyond the weekday name.

References: std::time_get< _CharT, _InIter >::do_get_weekday().


πŸ‘‘ get_year β€” the 2-digit vs 4-digit lore

template<typename _CharT , typename _InIter >
iter_type std::time_get< _CharT, _InIter >::get_year(iter_type __beg, iter_type __end,
    ios_base& __io, ios_base::iostate& __err, tm* __tm) const

[inline]

Reads up to 4 characters to parse a year string into your user-supplied struct tm, and the result is returned by calling time_get::do_get_year() πŸ”₯

The rules, bestie, listen up:

  • 4 consecutive digits are interpreted as a full year ✨
  • If there are exactly 2 consecutive digits, the library interprets this as the number of years since 1900 😭
If an error occurs before the end, err |= ios_base::failbit. If parsing reads all the characters, err |= ios_base::eofbit.

Parameters:

  • __beg β€” start of string to parse.
  • __end β€” end of string to parse.
  • __io β€” source of the locale.
  • __err β€” error flags to set.
  • __tm β€” pointer to struct tm to fill in.

Returns: iterator to the first char beyond the year.

References: std::time_get< _CharT, _InIter >::do_get_year().


πŸ—‚οΈ MEMBER DATA DOCUMENTATION

🧊 id

template<typename _CharT , typename _InIter >
locale::id std::time_get< _CharT, _InIter >::id

[static]

Numpunct facet id. That's it, that's the whole description, she's concise πŸ’…


πŸ’Œ AUTHOR

Generated automatically by Doxygen for libstdc++ from the source code. Iconic. No human hands typed this, it just manifested 🧚


and that's the whole page, bestie!! πŸŽ‰πŸ’–βœ¨

This little beauty lives at libstdstd::time_get< _CharT, _InIter >(3cxx) β€” that's the source/version tag chilling in the footer β€” and it's stamped with its date right down there at the bottom of the page, auto-generated for libstdc++ from the source code. Go forth and parse those dates, you absolute icon πŸ«ΆπŸ‘‘

πŸ“¦ where this page comes from