29 Input/output library [input.output]

29.7 Formatting and manipulators [iostream.format]

29.7.7 Extended manipulators [ext.manip]

The header <iomanip> defines several functions that support extractors and inserters that allow for the parsing and formatting of sequences and values for money and time.
template<class moneyT> unspecified get_money(moneyT& mon, bool intl = false);
Mandates: The type moneyT is either long double or a specialization of the basic_­string template ([strings]).
Effects: The expression in >> get_­money(mon, intl) described below behaves as a formatted input function.
Returns: An object of unspecified type such that if in is an object of type basic_­istream<charT, traits> then the expression in >> get_­money(mon, intl) behaves as if it called f(in, mon, intl), where the function f is defined as: template<class charT, class traits, class moneyT> void f(basic_ios<charT, traits>& str, moneyT& mon, bool intl) { using Iter = istreambuf_iterator<charT, traits>; using MoneyGet = money_get<charT, Iter>; ios_base::iostate err = ios_base::goodbit; const MoneyGet& mg = use_facet<MoneyGet>(str.getloc()); mg.get(Iter(str.rdbuf()), Iter(), intl, str, err, mon); if (ios_base::goodbit != err) str.setstate(err); }
The expression in >> get_­money(mon, intl) has type basic_­istream<charT, traits>& and value in.
template<class moneyT> unspecified put_money(const moneyT& mon, bool intl = false);
Mandates: The type moneyT is either long double or a specialization of the basic_­string template ([strings]).
Returns: An object of unspecified type such that if out is an object of type basic_­ostream<charT, traits> then the expression out << put_­money(mon, intl) behaves as a formatted output function that calls f(out, mon, intl), where the function f is defined as: template<class charT, class traits, class moneyT> void f(basic_ios<charT, traits>& str, const moneyT& mon, bool intl) { using Iter = ostreambuf_iterator<charT, traits>; using MoneyPut = money_put<charT, Iter>; const MoneyPut& mp = use_facet<MoneyPut>(str.getloc()); const Iter end = mp.put(Iter(str.rdbuf()), intl, str, str.fill(), mon); if (end.failed()) str.setstate(ios_base::badbit); }
The expression out << put_­money(mon, intl) has type basic_­ostream<charT, traits>& and value out.
template<class charT> unspecified get_time(tm* tmb, const charT* fmt);
Preconditions: The argument tmb is a valid pointer to an object of type tm, and [fmt, fmt + char_­traits<charT>​::​length(fmt)) is a valid range.
Returns: An object of unspecified type such that if in is an object of type basic_­istream<charT, traits> then the expression in >> get_­time(tmb, fmt) behaves as if it called f(in, tmb, fmt), where the function f is defined as: template<class charT, class traits> void f(basic_ios<charT, traits>& str, tm* tmb, const charT* fmt) { using Iter = istreambuf_iterator<charT, traits>; using TimeGet = time_get<charT, Iter>; ios_base::iostate err = ios_base::goodbit; const TimeGet& tg = use_facet<TimeGet>(str.getloc()); tg.get(Iter(str.rdbuf()), Iter(), str, err, tmb, fmt, fmt + traits::length(fmt)); if (err != ios_base::goodbit) str.setstate(err); }
The expression in >> get_­time(tmb, fmt) has type basic_­istream<charT, traits>& and value in.
template<class charT> unspecified put_time(const tm* tmb, const charT* fmt);
Preconditions: The argument tmb is a valid pointer to an object of type tm, and [fmt, fmt + char_­traits<charT>​::​length(fmt)) is a valid range.
Returns: An object of unspecified type such that if out is an object of type basic_­ostream<charT, traits> then the expression out << put_­time(tmb, fmt) behaves as if it called f(out, tmb, fmt), where the function f is defined as: template<class charT, class traits> void f(basic_ios<charT, traits>& str, const tm* tmb, const charT* fmt) { using Iter = ostreambuf_iterator<charT, traits>; using TimePut = time_put<charT, Iter>; const TimePut& tp = use_facet<TimePut>(str.getloc()); const Iter end = tp.put(Iter(str.rdbuf()), str, str.fill(), tmb, fmt, fmt + traits::length(fmt)); if (end.failed()) str.setstate(ios_base::badbit); }
The expression out << put_­time(tmb, fmt) has type basic_­ostream<charT, traits>& and value out.