Compartilhar via


numpunct Class

 

The latest version of this topic can be found at numpunct Class.

A template class that describes an object that can serve as a local facet to describe the sequences of type CharType used to represent information about the formatting and punctuation of numeric and Boolean expressions.

Syntax

template <class CharType>  
class numpunct : public locale::facet;  

Parameters

CharType
The type used within a program to encode characters in a locale.

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.

Constructors

numpunct The constructor for objects of type numpunct.

Typedefs

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

decimal_point Returns a locale-specific element to use as a decimal point.
do_decimal_point A protected virtual member function that is called to return a locale-specific element to use as a decimal point.
do_falsename A protected virtual member function that is called to return a string to use as a text representation of the value false.
do_grouping A protected virtual member function that is called to return a locale-specific rule for determining how digits are grouped to the left of any decimal point.
do_thousands_sep A protected virtual member function that is called to return a locale-specific element to use as a thousands separator.
do_truename A protected virtual member function that is called to return a string to use as a text representation of the value true.
falsename Returns a string to use as a text representation of the value false.
grouping Returns a locale-specific rule for determining how digits are grouped to the left of any decimal point.
thousands_sep Returns a locale-specific element to use as a thousands separator.
truename Returns a string to use as a text representation of the value true.

Requirements

Header: <locale>

Namespace: std

numpunct::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.

numpunct::decimal_point

Returns a locale-specific element to use as a decimal point.

CharType decimal_point() const;

Return Value

A locale-specific element to use as a decimal point.

Remarks

The member function returns do_decimal_point.

Example

// numpunct_decimal_point.cpp  
// compile with: /EHsc  
#include <locale>  
#include <iostream>  
#include <sstream>  
using namespace std;  
int main( )  
{  
   locale loc( "german_germany" );  
  
   const numpunct <char> &npunct =   
   use_facet <numpunct <char> >( loc);  
   cout << loc.name( ) << " decimal point "<<   
   npunct.decimal_point( ) << endl;  
   cout << loc.name( ) << " thousands separator "   
   << npunct.thousands_sep( ) << endl;  
};  
German_Germany.1252 decimal point ,  
German_Germany.1252 thousands separator .  

numpunct::do_decimal_point

A protected virtual member function that is called to return a locale-specific element to use as a decimal point.

virtual CharType do_decimal_point() const;

Return Value

A locale-specific element to use as a decimal point.

Example

See the example for decimal_point, where the virtual member function is called by decimal_point.

numpunct::do_falsename

The protected virtual member function returns a sequence to use as a text representation of the value false.

virtual string_type do_falsename() const;

Return Value

A string containing a sequence to use as a text representation of the value false.

Remarks

The member function returns the string "false" to represent the value false in all locales.

Example

See the example for falsename, where the virtual member function is called by falsename.

numpunct::do_grouping

A protected virtual member function that is called to return 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.

Remarks

The protected virtual member function returns a locale-specific rule for determining how digits are grouped to the left of any decimal point. The encoding is the same as for lconv::grouping.

Example

See the example for grouping, where the virtual member function is called by grouping.

numpunct::do_thousands_sep

A protected virtual member function that is called to return a locale-specific element to use as a thousands separator.

virtual CharType do_thousands_sep() const;

Return Value

Returns a locale-specific element to use as a thousands separator.

Remarks

The protected virtual member function returns a locale-specific element of type CharType 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.

numpunct::do_truename

A protected virtual member function that is called to return a string to use as a text representation of the value true.

virtual string_type do_truename() const;

Remarks

A string to use as a text representation of the value true.

All locales return a string "true" to represent the value true.

Example

See the example for truename, where the virtual member function is called by truename.

numpunct::falsename

Returns a string to use as a text representation of the value false.

string_type falsename() const;

Return Value

A string containing a sequence of CharTypes to use as a text representation of the value false.

Remarks

The member function returns the string "false" to represent the value false in all locales.

The member function returns do_falsename.

Example

// numpunct_falsename.cpp  
// compile with: /EHsc  
#include <locale>  
#include <iostream>  
#include <sstream>  
using namespace std;  
int main( )  
{  
   locale loc( "English" );  
  
   const numpunct <char> &npunct = use_facet <numpunct <char> >( loc );  
   cout << loc.name( ) << " truename "<< npunct.truename( ) << endl;  
   cout << loc.name( ) << " falsename "<< npunct.falsename( ) << endl;  
  
   locale loc2( "French" );  
   const numpunct <char> &npunct2 = use_facet <numpunct <char> >(loc2);  
   cout << loc2.name( ) << " truename "<< npunct2.truename( ) << endl;  
   cout << loc2.name( ) << " falsename "<< npunct2.falsename( ) << endl;  
}  
English_United States.1252 truename true  
English_United States.1252 falsename false  
French_France.1252 truename true  
French_France.1252 falsename false  

numpunct::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

// numpunct_grouping.cpp  
// compile with: /EHsc  
#include <locale>  
#include <iostream>  
#include <sstream>  
using namespace std;  
int main( )  
{  
   locale loc( "german_germany");  
  
   const numpunct <char> &npunct =   
       use_facet < numpunct <char> >( loc );  
   for (unsigned int i = 0; i < npunct.grouping( ).length( ); i++)  
   {  
      cout << loc.name( ) << " international grouping:\n the "  
           << i <<"th group to the left of the radix character "  
           << "is of size " << (int)(npunct.grouping ( )[i])   
           << endl;  
   }  
}  
German_Germany.1252 international grouping:  
 the 0th group to the left of the radix character is of size 3  

numpunct::numpunct

The constructor for objects of type numpunct.

explicit numpunct(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.

  • > 0: 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).

numpunct::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 template class basic_string whose objects can store copies of the punctuation sequences.

numpunct::thousands_sep

Returns a locale-specific element to use as a thousands separator.

CharType thousands_sep() const;

Return Value

A locale-specific element to use as a thousands separator.

Remarks

The member function returns do_thousands_sep.

Example

// numpunct_thou_sep.cpp  
// compile with: /EHsc  
#include <locale>  
#include <iostream>  
#include <sstream>  
using namespace std;  
int main( )  
{  
   locale loc( "german_germany" );  
  
   const numpunct <char> &npunct =   
   use_facet < numpunct < char > >( loc );  
   cout << loc.name( ) << " decimal point "<<   
   npunct.decimal_point( ) << endl;  
   cout << loc.name( ) << " thousands separator "   
   << npunct.thousands_sep( ) << endl;  
};  
German_Germany.1252 decimal point ,  
German_Germany.1252 thousands separator .  

numpunct::truename

Returns a string to use as a text representation of the value true.

string_type falsename() const;

Return Value

A string to use as a text representation of the value true.

Remarks

The member function returns do_truename.

All locales return a string "true" to represent the value true.

Example

// numpunct_truename.cpp  
// compile with: /EHsc  
#include <locale>  
#include <iostream>  
#include <sstream>  
using namespace std;  
int main( )  
{  
   locale loc( "English" );  
  
   const numpunct < char> &npunct = use_facet <numpunct <char> >( loc );  
   cout << loc.name( ) << " truename "<< npunct.truename( ) << endl;  
   cout << loc.name( ) << " falsename "<< npunct.falsename( ) << endl;  
  
   locale loc2("French");  
   const numpunct <char> &npunct2 = use_facet <numpunct <char> >( loc2 );  
   cout << loc2.name( ) << " truename "<< npunct2.truename( ) << endl;  
   cout << loc2.name( ) << " falsename "<< npunct2.falsename( ) << endl;  
}  
English_United States.1252 truename true  
English_United States.1252 falsename false  
French_France.1252 truename true  
French_France.1252 falsename false  

See Also

<locale>
facet Class
Thread Safety in the C++ Standard Library