std::time_get<CharT,InputIt>::get,std::time_get<CharT,InputIt>::do_get (3) - Linux Manuals
std::time_get<CharT,InputIt>::get,std::time_get<CharT,InputIt>::do_get: std::time_get<CharT,InputIt>::get,std::time_get<CharT,InputIt>::do_get
NAME
std::time_get<CharT,InputIt>::get,std::time_get<CharT,InputIt>::do_get - std::time_get<CharT,InputIt>::get,std::time_get<CharT,InputIt>::do_get
Synopsis
Defined in header <locale>
public:
iter_type get(iter_type beg, iter_type end, std::ios_base& str, (1) (since C++11)
std::ios_base::iostate& err, std::tm* t,
const char_type* fmtbeg, const char_type* fmtend) const;
protected:
virtual iter_type do_get(iter_type beg, iter_type end, std::ios_base& str, (2) (since C++11)
std::ios_base::iostate& err, std::tm *t,
char format, char modifier) const;
1) Parses the date and time from the input character sequence [beg, end) according to the format provided in the character sequence [fmtbeg, fmtend). The format is expected to follow the format described below, although actual processing of each format specifier can be customized by overriding do_get. The get function performs the following: First, clears the error bits in err by executing err = std::ios_base::goodbit. Then enters a loop, which terminates whenever any of the following conditions becomes true (checked in this order):
a) All characters have been read from the format string (fmtbeg == fmtend)
b) There was a parsing error (err != std::ios_base::goodbit)
c) All characters have been read from the input sequence (beg == end. If this condition terminates the loop, the function sets both eofbit and failbit in err
a) if the next character in the format string is '%', followed by one or two characters that form a valid std::get_time conversion specifier (see below), these characters are used in the call do_get(beg, end, str, err, t, format, modifier), where format is the primary conversion specifier character, and modifier is the optional modifier (which appears between % and the format character, if present). If there is no modifier, the value '\0' is used. If the format string is ambiguous or ends too early to determine the conversion specifier after '%', eofbit is set in err and the loop is terminated. If, after the call to do_get, no error bits are set in err, the function increments fmtbeg to point right after the conversion specifier and continues the loop.
b) If the next character is whitespace, as indicated by the locale provided in the stream str (i.e. std::isspace(*fmtbeg, str.getloc()) == true, the function keeps incrementing fmtbeg until it either becomes equal to fmtend or points to a non-whitespace character.
c) If the next character in the format string is equivalent to the next character in the input stream according to case-insensitive comparison, the function advances both sequences by one character ++fmtbeg, ++beg; and continues the loop, Otherwise, it sets the failbit in err.
2) Parses one conversion specifier from the input sequence [beg, end) and updates the std::tm structure pointed to by t accordingly.
Parameters
beg - iterator designating the start of the sequence to parse
end - one past the end iterator for the sequence to parse
str - a stream object that this function uses to obtain locale facets when needed, e.g. std::ctype to skip whitespace or std::collate to compare strings
err - stream error flags object that is modified by this function to indicate errors
t - pointer to the std::tm object that will hold the result of this function call