Namespaces
Variants
Views
Actions

std::moneypunct<CharT,International>::pos_format, do_pos_format, neg_format, do_neg_format

From cppreference.com
< cpp‎ | locale‎ | moneypunct
 
 
Localizations library
Locales and facets
Locales
Facet category base classes
ctype facets
numeric facets
collate facets
time facets
monetary facets
messages facets
Character classification and conversion
Character classification
Conversions
(C++11/17*)
(C++11/17*)
Code conversion facets
(C++11/17/26*)
(C++11/17/26*)    
(C++11/17/26*)
(C++11/17/26*)
C locale
Text encoding identifications
 
 
Defined in header <locale>
public:
pattern pos_format() const;
(1)
public:
pattern neg_format() const;
(2)
protected:
virtual pattern do_pos_format() const;
(3)
protected:
virtual pattern do_neg_format() const;
(4)
1) Public member function, calls the member function do_pos_format of the most derived class.
2) Public member function, calls the member function do_neg_format of the most derived class.
3) Returns the format structure (of type std::money_base::format) which describes the formatting of positive monetary values.
4) Returns the format structure (of type std::money_base::format) which describes the formatting of negative monetary values.

The standard specializations of std::moneypunct return the pattern {symbol, sign, none, value}.

Contents

[edit] Return value

The object of type std::money_base::format describing the formatting used by this locale.

[edit] Notes

While std::money_put uses pos_format for formatting positive values and neg_format for formatting negative values, std::money_get uses neg_format for parsing all monetary values: it assumes that neg_format is compatible with pos_format.

[edit] Example

#include <iomanip>
#include <iostream>
#include <locale>
 
struct my_punct : std::moneypunct_byname<char, false>
{
    my_punct(const char* name) : moneypunct_byname(name) {}
    pattern do_pos_format() const { return {value, space, symbol, sign}; }
    pattern do_neg_format() const { return {value, space, symbol, sign}; }
};
 
int main()
{
    std::cout.imbue(std::locale("en_US.utf8"));
    std::cout << "american locale: " << std::showbase
              << std::put_money(12345678.0) << '\n';
 
    std::cout.imbue(std::locale(std::cout.getloc(), new my_punct("en_US.utf8")));
    std::cout << "locale with modified moneypunct:\n"
              << std::put_money(12345678.0) << '\n'
              << std::put_money(-12345678.0) << '\n';
}

Output:

american locale: $123,456.78
locale with modified moneypunct:
123,456.78 $
123,456.78 $-

[edit] See also

provides the string to use as the currency identifier
(virtual protected member function) [edit]
provides the string to indicate a positive or negative value
(virtual protected member function) [edit]
[virtual]
parses a monetary value from an input stream
(virtual protected member function of std::money_get<CharT,InputIt>) [edit]
[virtual]
formats a monetary value and writes to output stream
(virtual protected member function of std::money_put<CharT,OutputIt>) [edit]