< cpp‎ | locale
Revision as of 22:09, 31 May 2013 by P12bot (Talk | contribs)

Defined in header <locale>

    class CharT,
    class OutputIt = std::ostreambuf_iterator<CharT>

> class money_put;

Class std::money_put encapsulates the rules for formatting monetary values as strings. The standard I/O manipulator std::put_money uses the std::money_put facet of the I/O stream's locale.

cpp/locale/locale/facetstd-money put-inheritance.svg
About this image

Inheritance diagram


Type requirements

InputIt must meet the requirements of InputIterator.


Two specializations and two partial specializations are provided by the standard library and are implemented by all locale objects created in a C++ program:

Defined in header <locale>
std::money_put<char> creates narrow string representations of monetary values
std::money_put<wchar_t> creates wide string representations of monetary values
std::money_put<char, OutputIt> creates narrow string representations of monetary values using custom output iterator
std::money_put<wchar_t, OutputIt> creates wide string representations of monetary values using custom output iterator

Member types

Member type Definition
char_type CharT
string_type std::basic_string<CharT>
iter_type OutputIt

Member functions

constructs a new money_put facet
(public member function)
destructs a money_put facet
(protected member function)
invokes do_put
(public member function)

Protected member functions

formats a monetary value and writes to output stream
(virtual protected member function)

Member objects

static std::locale::id id
id of the locale
(public member object)


#include <iostream>
#include <locale>
#include <iomanip>
#include <iterator>
int main()
    // using the IO manipulator
    std::cout << "american locale: "
               << std::showbase << std::put_money(12345678.9)<< '\n';
    // using the facet directly
    std::cout << "german locale: " ;
    std::ostreambuf_iterator<char> out(std::cout);
    auto& f = std::use_facet<std::money_put<char>>(std::cout.getloc());
    f.put(out, false, std::cout, std::cout.fill(), 12345678.9 );
    std::cout << '\n';


american locale: $123,456.79
german locale: 123.456,79 EUR

See also

defines monetary formatting parameters used by std::money_get and std::money_put
(class template) [edit]
parses and constructs a monetary value from an input character sequence
(class template) [edit]
formats and outputs a monetary value
(function template)