moneypunct Class
The class template describes an object that can serve as a locale facet to describe the sequences of type CharType used to represent a monetary input field or a monetary output field. If the template parameter Intl is true, international conventions are observed.
Syntax
template <class CharType, bool Intl>
class moneypunct;
Parameters
CharType
The type used within a program to encode characters.
Intl
A flag specifying whether international conventions are to be observed.
Remarks
As with any locale facet, the static object ID has an initial stored value of zero. The first attempt to access its stored value stores a unique positive value in id.
The const static object intl stores the value of the template parameter Intl.
Constructors
Constructor | Description |
---|---|
moneypunct | Constructor of objects of type moneypunct . |
Typedefs
Type name | Description |
---|---|
char_type | A type that is used to describe a character used by a locale. |
string_type | A type that describes a string containing characters of type CharType . |
Member functions
Member function | Description |
---|---|
curr_symbol | Returns a locale-specific sequence of elements to use as a currency symbol. |
decimal_point | Returns a locale-specific sequence of elements to use as a decimal point symbol. |
do_curr_symbol | A protected virtual member function that returns a locale-specific sequence of elements to use as a currency symbol. |
do_decimal_point | A protected virtual member function that is called to return a locale-specific sequence of elements to use as a decimal point symbol. |
do_frac_digits | The protected virtual member function returns a locale-specific count of the number of digits to display to the right of any decimal point. |
do_grouping | The protected virtual member function returns a locale-specific rule for determining how digits are grouped to the left of any decimal point. |
do_neg_format | A protected virtual member function that is called to return a locale-specific rule for formatting outputs with negative amounts. |
do_negative_sign | A protected virtual member function that is called to return a locale-specific sequence of elements to use as a negative sign symbol. |
do_pos_format | A protected virtual member function that is called to return a locale-specific rule for formatting outputs with positive amounts. |
do_positive_sign | A protected virtual member function that is called to return a locale-specific sequence of elements to use as a positive sign symbol. |
do_thousands_sep | A protected virtual member function that is called to return a locale-specific sequence of elements to use as a thousands separator symbol. |
frac_digits | Returns a locale-specific count of the number of digits to display to the right of any decimal point. |
grouping | Returns a locale-specific rule for determining how digits are grouped to the left of any decimal point. |
neg_format | Returns a locale-specific rule for formatting outputs with negative amounts. |
negative_sign | Returns a locale-specific sequence of elements to use as a negative sign symbol. |
pos_format | Returns a locale-specific rule for formatting outputs with positive amounts. |
positive_sign | Returns a locale-specific sequence of elements to use as a positive sign symbol. |
thousands_sep | Returns a locale-specific sequence of elements to use as a thousands separator symbol. |
Requirements
Header: <locale>
Namespace: std
moneypunct::char_type
A type that is used to describe a character used by a locale.
typedef CharType char_type;
Remarks
The type is a synonym for the template parameter CharType.
moneypunct::curr_symbol
Returns a locale-specific sequence of elements to use as a currency symbol.
string_type curr_symbol() const;
Return Value
A string containing the currency symbol.
Remarks
The member function returns do_curr_symbol.
Example
// moneypunct_curr_symbol.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
locale loc( "german_germany" );
const moneypunct < char, true > &mpunct = use_facet < moneypunct < char, true > >(loc);
cout << loc.name( ) << " international currency symbol "<< mpunct.curr_symbol( ) << endl;
const moneypunct < char, false> &mpunct2 = use_facet < moneypunct < char, false> >(loc);
cout << loc.name( ) << " domestic currency symbol "<< mpunct2.curr_symbol( ) << endl;
};
moneypunct::decimal_point
Returns a locale-specific sequence of elements to use as a decimal point symbol.
CharType decimal_point() const;
Return Value
A locale-specific sequence of elements to use as a decimal point symbol.
Remarks
The member function returns do_decimal_point.
Example
// moneypunct_decimal_pt.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
locale loc("german_germany");
const moneypunct < char, true > &mpunct = use_facet
< moneypunct < char, true > >(loc);
cout << loc.name( ) << " international decimal point "
<< mpunct.decimal_point( ) << endl;
const moneypunct < char, false> &mpunct2 = use_facet
< moneypunct < char, false> >(loc);
cout << loc.name( ) << " domestic decimal point "
<< mpunct2.decimal_point( ) << endl;
}
German_Germany.1252 international decimal point ,
German_Germany.1252 domestic decimal point ,
moneypunct::do_curr_symbol
A protected virtual member function that returns a locale-specific sequence of elements to use as a currency symbol.
virtual string_type do_curr_symbol() const;
Return Value
A locale-specific sequence of elements to use as a decimal point symbol.
Example
See the example for curr_symbol, where the virtual member function is called by curr_symbol
.
moneypunct::do_decimal_point
A protected virtual member function that returns a locale-specific sequence of elements to use as a decimal point symbol.
virtual CharType do_decimal_point() const;
Return Value
A locale-specific sequence of elements to use as a decimal point symbol.
Example
See the example for decimal_point, where the virtual member function is called by decimal_point
.
moneypunct::do_frac_digits
A protected virtual member function that returns a locale-specific count of the number of digits to display to the right of any decimal point.
virtual int do_frac_digits() const;
Return Value
A locale-specific count of the number of digits to display to the right of any decimal point.
Example
See the example for frac_digits, where the virtual member function is called by frac_digits
.
moneypunct::do_grouping
A protected virtual member function that returns a locale-specific rule for determining how digits are grouped to the left of any decimal point.
virtual string do_grouping() const;
Return Value
A locale-specific rule for determining how digits are grouped to the left of any decimal point.
Example
See the example for grouping, where the virtual member function is called by grouping
.
moneypunct::do_neg_format
A protected virtual member function that is called to return a locale-specific rule for formatting outputs with negative amounts.
virtual pattern do_neg_format() const;
Return Value
The protected virtual member function returns a locale-specific rule for determining how to generate a monetary output field for a negative amount. Each of the four elements of pattern::field
can have the values:
none
to match zero or more spaces or generate nothing.sign
to match or generate a positive or negative sign.space
to match zero or more spaces or generate a space.symbol
to match or generate a currency symbol.value
to match or generate a monetary value.
Components of a monetary output field are generated and components of a monetary input field are matched in the order in which these elements appear in pattern::field
. Each of the values sign
, symbol
, value
, and either none
or space
must appear exactly once. The value none
must not appear first. The value space
must not appear first or last. If Intl
is true, the order is symbol
, sign
, none
, then value
.
The template version of moneypunct< CharType, Intl >
returns {money_base::symbol, money_base::sign, money_base::value, money_base::none}
.
Example
See the example for neg_format, where the virtual member function is called by neg_format
.
moneypunct::do_negative_sign
A protected virtual member function that is called to return a locale-specific sequence of elements to use as a negative sign symbol.
virtual string_type do_negative_sign() const;
Return Value
A locale-specific sequence of elements to use as a negative sign.
Example
See the example for negative_sign, where the virtual member function is called by negative_sign
.
moneypunct::do_pos_format
A protected virtual member function that is called to return a locale-specific rule for formatting outputs with positive amounts.
virtual pattern do_pos_format() const;
Return Value
The protected virtual member function returns a locale-specific rule for determining how to generate a monetary output field for a positive amount. (It also determines how to match the components of a monetary input field.) The encoding is the same as for do_neg_format.
The template version of moneypunct< CharType, Inputlterator >
returns { money_base::symbol, money_base::sign, money_base::value, money_base::none }
.
Example
See the example for pos_format, where the virtual member function is called by pos_format
.
moneypunct::do_positive_sign
A protected virtual member function that returns a locale-specific sequence of elements to use as a positive sign.
virtual string_type do_positive_sign() const;
Return Value
A locale-specific sequence of elements to use as a positive sign.
Example
See the example for positive_sign, where the virtual member function is called by positive_sign
.
moneypunct::do_thousands_sep
A protected virtual member function that returns a locale-specific element to use as a group separator to the left of any decimal point.
virtual CharType do_thousands_sep() const;
Return Value
A locale-specific element to use as a group separator to the left of any decimal point.
Example
See the example for thousands_sep, where the virtual member function is called by thousands_sep
.
moneypunct::frac_digits
Returns a locale-specific count of the number of digits to display to the right of any decimal point.
int frac_digits() const;
Return Value
A locale-specific count of the number of digits to display to the right of any decimal point.
Remarks
The member function returns do_frac_digits.
Example
// moneypunct_frac_digits.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
locale loc( "german_germany" );
const moneypunct <char, true> &mpunct =
use_facet <moneypunct <char, true> >(loc);
for (unsigned int i = 0; i <mpunct.grouping( ).length( ); i++ )
{
cout << loc.name( ) << " international grouping:\n the "
<< i <<"th group to the left of the radix character "
<< "is of size " << (int)(mpunct.grouping ( )[i])
<< endl;
}
cout << loc.name( ) << " international frac_digits\n to the right"
<< " of the radix character: "
<< mpunct.frac_digits ( ) << endl << endl;
const moneypunct <char, false> &mpunct2 =
use_facet <moneypunct <char, false> >(loc);
for (unsigned int i = 0; i <mpunct2.grouping( ).length( ); i++ )
{
cout << loc.name( ) << " domestic grouping:\n the "
<< i <<"th group to the left of the radix character "
<< "is of size " << (int)(mpunct2.grouping ( )[i])
<< endl;
}
cout << loc.name( ) << " domestic frac_digits\n to the right"
<< " of the radix character: "
<< mpunct2.frac_digits ( ) << endl << endl;
}
German_Germany.1252 international grouping:
the 0th group to the left of the radix character is of size 3
German_Germany.1252 international frac_digits
to the right of the radix character: 2
German_Germany.1252 domestic grouping:
the 0th group to the left of the radix character is of size 3
German_Germany.1252 domestic frac_digits
to the right of the radix character: 2
moneypunct::grouping
Returns a locale-specific rule for determining how digits are grouped to the left of any decimal point.
string grouping() const;
Return Value
A locale-specific rule for determining how digits are grouped to the left of any decimal point.
Remarks
The member function returns do_grouping.
Example
// moneypunct_grouping.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
locale loc( "german_germany" );
const moneypunct <char, true> &mpunct =
use_facet <moneypunct <char, true> >( loc );
for (unsigned int i = 0; i <mpunct.grouping( ).length( ); i++ )
{
cout << loc.name( ) << " international grouping:\n the "
<< i <<"th group to the left of the radix character "
<< "is of size " << (int)(mpunct.grouping ( )[i])
<< endl;
}
cout << loc.name( ) << " international frac_digits\n to the right"
<< " of the radix character: "
<< mpunct.frac_digits ( ) << endl << endl;
const moneypunct <char, false> &mpunct2 =
use_facet <moneypunct <char, false> >( loc );
for (unsigned int i = 0; i <mpunct2.grouping( ).length( ); i++ )
{
cout << loc.name( ) << " domestic grouping:\n the "
<< i <<"th group to the left of the radix character "
<< "is of size " << (int)(mpunct2.grouping ( )[i])
<< endl;
}
cout << loc.name( ) << " domestic frac_digits\n to the right"
<< " of the radix character: "
<< mpunct2.frac_digits ( ) << endl << endl;
}
German_Germany.1252 international grouping:
the 0th group to the left of the radix character is of size 3
German_Germany.1252 international frac_digits
to the right of the radix character: 2
German_Germany.1252 domestic grouping:
the 0th group to the left of the radix character is of size 3
German_Germany.1252 domestic frac_digits
to the right of the radix character: 2
moneypunct::moneypunct
Constructor of objects of type moneypunct
.
explicit moneypunct(size_t _Refs = 0);
Parameters
_Refs
Integer value used to specify the type of memory management for the object.
Remarks
The possible values for the _Refs parameter and their significance are:
0: The lifetime of the object is managed by the locales that contain it.
1: The lifetime of the object must be manually managed.
> 1: These values are not defined.
No direct examples are possible, because the destructor is protected.
The constructor initializes its base object with locale::facet(_ Refs).
moneypunct::neg_format
Returns a locale-specific rule for formatting outputs with negative amounts.
pattern neg_format() const;
Return Value
A locale-specific rule for formatting outputs with negative amounts.
Remarks
The member function returns do_neg_format.
Example
// moneypunct_neg_format.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( ) {
locale loc( "german_germany" );
const moneypunct <char, true> &mpunct =
use_facet <moneypunct <char, true > >(loc);
cout << loc.name( ) << " international negative number format: "
<< mpunct.neg_format( ).field[0]
<< mpunct.neg_format( ).field[1]
<< mpunct.neg_format( ).field[2]
<< mpunct.neg_format( ).field[3] << endl;
const moneypunct <char, false> &mpunct2 =
use_facet <moneypunct <char, false> >(loc);
cout << loc.name( ) << " domestic negative number format: "
<< mpunct2.neg_format( ).field[0]
<< mpunct2.neg_format( ).field[1]
<< mpunct2.neg_format( ).field[2]
<< mpunct2.neg_format( ).field[3] << endl;
}
moneypunct::negative_sign
Returns a locale-specific sequence of elements to use as a negative sign symbol.
string_type negative_sign() const;
Return Value
Returns a locale-specific sequence of elements to use as a negative sign symbol.
Remarks
The member function returns do_negative_sign.
Example
// moneypunct_neg_sign.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
locale loc( "german_germany" );
const moneypunct <char, true> &mpunct =
use_facet <moneypunct <char, true> >(loc);
cout << loc.name( ) << " international negative sign: "
<< mpunct.negative_sign( ) << endl;
const moneypunct <char, false> &mpunct2 =
use_facet <moneypunct <char, false> >(loc);
cout << loc.name( ) << " domestic negative sign: "
<< mpunct2.negative_sign( ) << endl;
locale loc2( "French" );
const moneypunct <char, true> &mpunct3 =
use_facet <moneypunct <char, true> >(loc2);
cout << loc2.name( ) << " international negative sign: "
<< mpunct3.negative_sign( ) << endl;
const moneypunct <char, false> &mpunct4 =
use_facet <moneypunct <char, false> >(loc2);
cout << loc2.name( ) << " domestic negative sign: "
<< mpunct4.negative_sign( ) << endl;
};
German_Germany.1252 international negative sign: -
German_Germany.1252 domestic negative sign: -
French_France.1252 international negative sign: -
French_France.1252 domestic negative sign: -
moneypunct::pos_format
Returns a locale-specific rule for formatting outputs with positive amounts.
pattern pos_format() const;
Return Value
A locale-specific rule for formatting outputs with positive amounts.
Remarks
The member function returns do_pos_format.
Example
// moneypunct_pos_format.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main() {
locale loc( "german_germany" );
const moneypunct <char, true> &mpunct =
use_facet <moneypunct <char, true> >(loc);
cout << loc.name( ) << " international positive number format: "
<< mpunct.pos_format( ).field[0]
<< mpunct.pos_format( ).field[1]
<< mpunct.pos_format( ).field[2]
<< mpunct.pos_format( ).field[3] << endl;
const moneypunct <char, false> &mpunct2 =
use_facet <moneypunct <char, false> >(loc);
cout << loc.name( ) << " domestic positive number format: "
<< mpunct2.pos_format( ).field[0]
<< mpunct2.pos_format( ).field[1]
<< mpunct2.pos_format( ).field[2]
<< mpunct2.pos_format( ).field[3] << endl;
}
moneypunct::positive_sign
Returns a locale-specific sequence of elements to use as a positive sign symbol.
string_type positive_sign() const;
Return Value
A locale-specific sequence of elements to use as a positive sign symbol.
Remarks
The member function returns do_positive_sign.
Example
// moneypunct_pos_sign.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
locale loc( "german_germany" );
const moneypunct <char, true> &mpunct =
use_facet <moneypunct <char, true > >(loc);
cout << loc.name( ) << " international positive sign:"
<< mpunct.positive_sign( ) << endl;
const moneypunct <char, false> &mpunct2 =
use_facet <moneypunct <char, false> >(loc);
cout << loc.name( ) << " domestic positive sign:"
<< mpunct2.positive_sign( ) << endl;
locale loc2( "French" );
const moneypunct <char, true> &mpunct3 =
use_facet <moneypunct <char, true> >(loc2);
cout << loc2.name( ) << " international positive sign:"
<< mpunct3.positive_sign( ) << endl;
const moneypunct <char, false> &mpunct4 =
use_facet <moneypunct <char, false> >(loc2);
cout << loc2.name( ) << " domestic positive sign:"
<< mpunct4.positive_sign( ) << endl;
};
German_Germany.1252 international positive sign:
German_Germany.1252 domestic positive sign:
French_France.1252 international positive sign:
French_France.1252 domestic positive sign:
moneypunct::string_type
A type that describes a string containing characters of type CharType.
typedef basic_string<CharType, Traits, Allocator> string_type;
Remarks
The type describes a specialization of class template basic_string whose objects can store copies of the punctuation sequences.
moneypunct::thousands_sep
Returns a locale-specific sequence of elements to use as a thousands separator symbol.
CharType thousands_sep() const;
Return Value
A locale-specific sequence of elements to use as a thousands separator
Remarks
The member function returns do_thousands_sep.
Example
// moneypunct_thou_sep.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
locale loc( "german_germany" );
const moneypunct <char, true> &mpunct =
use_facet <moneypunct <char, true > >(loc);
cout << loc.name( ) << " international thousands separator: "
<< mpunct.thousands_sep( ) << endl;
const moneypunct <char, false> &mpunct2 =
use_facet <moneypunct <char, false> >(loc);
cout << loc.name( ) << " domestic thousands separator: "
<< mpunct2.thousands_sep( ) << endl << endl;
locale loc2( "english_canada" );
const moneypunct <char, true> &mpunct3 =
use_facet <moneypunct <char, true> >(loc2);
cout << loc2.name( ) << " international thousands separator: "
<< mpunct3.thousands_sep( ) << endl;
const moneypunct <char, false> &mpunct4 =
use_facet <moneypunct <char, false> >(loc2);
cout << loc2.name( ) << " domestic thousands separator: "
<< mpunct4.thousands_sep( ) << endl;
}
German_Germany.1252 international thousands separator: .
German_Germany.1252 domestic thousands separator: .
English_Canada.1252 international thousands separator: ,
English_Canada.1252 domestic thousands separator: ,