public member function
<locale>

std::moneypunct::grouping

string grouping() const;
Return grouping of digits
Returns a sequence of values indicating the number of digits in each group.

The sequence is returned as a string (basic_string<char>) where each char element shall be interpreted as an integer value indicating the number of digits in each group. Grouping is considered from right to left, with the first character in the string being used for the rightmost group, and the last character used for any group farther away than the length of the string.

For example, "\03" indicates groups of three digits each, while "\02\03" would indicate that the rightmost group has two digits and all the remaining ones have three digits each.

Internally, this function simply calls the virtual protected member do_grouping, which returns the sequence described above.

Parameters

none

Return value

A string containing a sequence of digit grouping values, from right to left.
Negative values, or values equal to CHAR_MAX, indicate that the number of digits in the group is unlimited.
An empty string as returned value indicates no grouping.
Notice that this is an object of type basic_string<char> no matter what character type is used as template parameter charT.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// moneypunct example
#include <iostream>       // std::cout
#include <locale>         // std::locale, std::moneypunct, std::use_facet

// overload inserter to print patterns:
std::ostream& operator<< (std::ostream& os, std::moneypunct<char>::pattern p)
{
  for (int i=0; i<4; i++)
    switch (p.field[i]) {
      case std::moneypunct<char>::none: std::cout << "none "; break;
      case std::moneypunct<char>::space: std::cout << "space "; break;
      case std::moneypunct<char>::symbol: std::cout << "symbol "; break;
      case std::moneypunct<char>::sign: std::cout << "sign "; break;
      case std::moneypunct<char>::value: std::cout << "value "; break;
    }
  return os;
}

int main ()
{
  std::locale mylocale;
  const std::moneypunct<char>& mp = std::use_facet<std::moneypunct<char> >(mylocale);

  std::cout << "moneypunct in locale \"" << mylocale.name() << "\":\n";

  std::cout << "decimal_point: " << mp.decimal_point() << '\n';
  std::cout << "thousands_sep: " << mp.thousands_sep() << '\n';
  std::cout << "grouping: " << mp.grouping() << '\n';
  std::cout << "curr_symbol: " << mp.curr_symbol() << '\n';
  std::cout << "positive_sign: " << mp.positive_sign() << '\n';
  std::cout << "negative_sign: " << mp.negative_sign() << '\n';
  std::cout << "frac_digits: " << mp.frac_digits() << '\n';
  std::cout << "pos_format: " << mp.pos_format() << '\n';
  std::cout << "neg_format: " << mp.neg_format() << '\n';
  
  return 0;
}

Possible output:

moneypunct in locale "C":
decimal_point:
thousands_sep:
grouping:
curr_symbol:
positive_sign:
negative_sign: -
frac_digits: 0
pos_format: symbol sign none value
neg_format: symbol sign none value


Data races

The facet is accessed.

Exception safety

Strong guarantee: No side effects in case an exception is thrown.

See also