46 template <
class Traits>
47 void operator() (std::basic_istream<charT, Traits>&,
const charT*)
const;
52template <
class Traits>
57 const typename std::basic_istream<charT, Traits>::sentry guard (
strm);
62 const charT*
const end = fmt + Traits::length (fmt);
64 std::ios_base::iostate err =
strm.goodbit;
66 typedef std::istreambuf_iterator<charT>
Iter;
67 typedef std::time_get<charT, Iter>
TimeGet;
70 const TimeGet &tg = std::use_facet<TimeGet>(
strm.getloc ());
93 if (
strm.goodbit != err)
100template <
class charT>
108 template <
class Traits>
109 void operator() (std::basic_ostream<charT, Traits>&,
const charT*)
const;
113template <
class charT>
114template <
class Traits>
119 const typename std::basic_ostream<charT, Traits>::sentry guard (
strm);
124 const charT*
const end = fmt + Traits::length (fmt);
126 typedef std::ostreambuf_iterator<charT>
Iter;
127 typedef std::time_put<charT, Iter>
TimePut;
132 const TimePut &tp = std::use_facet<TimePut>(
strm.getloc ());
135 it = tp.put (it,
strm,
strm.fill (), tmb_, fmt,
end);
138 bool rethrow =
false;
163template <
class charT>
164inline std::__rw_smanip<time_get_manip<charT>,
const charT*>
172 typedef std::__rw_smanip<GetTime, const charT*>
Manip;
174 return Manip (GetTime (tmb), fmt);
179template <
class charT>
180inline std::__rw_smanip<time_put_manip<charT>,
const charT*>
188 typedef std::__rw_smanip<PutTime, const charT*>
Manip;
190 return Manip (PutTime (tmb), fmt);
194int main (
int argc,
char *argv[])
198 const char*
const get_fmt = argc < 2 ?
"%c" : argv [1];
202 const char*
const put_fmt = argc < 3 ?
"%c" : argv [2];
205 const std::time_t
t = std::time (0);
206 std::tm*
const tmb = std::localtime (&
t);
209 std::cout.imbue (std::locale (
""));
212 std::cout <<
put_time (tmb, put_fmt) <<
'\n';
215 std::cin >>
get_time (tmb, get_fmt);
219 if (std::cin.good ())
220 std::cout <<
put_time (tmb, put_fmt) <<
'\n';
222 std::cerr <<
"get_time (std::tm*, \"" << get_fmt <<
"\") failed\n";
std::time_get< char > TimeGet
std::time_put< char > TimePut
std::ostream_iterator< int, char, std::char_traits< char > > Iter
time_get_manip(std::tm *tmb)
void operator()(std::basic_istream< charT, Traits > &, const charT *) const
void operator()(std::basic_ostream< charT, Traits > &, const charT *) const
time_put_manip(const std::tm *tmb)
std::__rw_smanip< time_put_manip< charT >, const charT * > put_time(const std::tm *tmb, const charT *fmt)
std::__rw_smanip< time_get_manip< charT >, const charT * > get_time(std::tm *tmb, const charT *fmt)