Namespaces
Variants
Views
Actions

std::moneypunct<CharT,International>::grouping, do_grouping

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:
std::string grouping() const;
(1)
protected:
virtual std::string do_grouping() const;
(2)
1) Public member function, calls the member function do_grouping of the most derived class.
2) Returns the pattern that determines the grouping of the digits in the monetary output, with the same exact meaning as std::numpunct::do_grouping.

[edit] Return value

The object of type std::string holding the groups. The standard specializations of std::moneypunct return an empty string, indicating no grouping. Typical groupings (e.g. the en_US locale) return "\003".

[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

provides the character to use as thousands separator
(virtual protected member function) [edit]
provides the character to use as decimal point
(virtual protected member function) [edit]