Namespaces
Variants
Views
Actions

std::moneypunct<CharT,International>::thousands_sep, do_thousands_sep

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:
char_type thousands_sep() const;
(1)
protected:
virtual char_type do_thousands_sep() const;
(2)
1) Public member function, calls the member function do_thousands_sep of the most derived class.
2) Returns the character to be used as the separator between digit groups when parsing or formatting the integral parts of monetary values.

[edit] Return value

The object of type char_type to use as the thousands separator. In common U.S. locales, this is ',' or L','.

[edit] Example

#include <iomanip>
#include <iostream>
#include <iterator>
#include <locale>
 
struct space_out : std::moneypunct<char>
{
    pattern do_pos_format() const { return {value, none, none, none}; }
    int do_frac_digits() const { return 0; }
    char_type do_thousands_sep() const { return ' '; }
    string_type do_grouping() const { return "\002"; }
};
 
int main()
{
    std::cout.imbue(std::locale("en_US.UTF-8"));
    std::cout << "american locale: " << std::showbase
              << std::put_money(12345678.0) << '\n';
 
    std::cout.imbue(std::locale(std::cout.getloc(), new space_out));
    std::cout << "locale with modified moneypunct: "
              << std::put_money(12345678.0) << '\n';
}

Output:

american locale: $123,456.78
locale with modified moneypunct: 12 34 56 78

[edit] See also

[virtual]
provides the numbers of digits between each pair of thousands separators
(virtual protected member function) [edit]