numpunct 类

一种类模板,用于描述一个对象来充当区域设置 facet,以便描述 CharType 类型的序列,后者用于表示与数字和布尔表达式的格式化及标点有关的信息。

语法

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

参数

CharType
在程序中用于对区域设置中的字符进行编码的类型。

备注

对于任何区域设置 facet,静态对象 ID 的初始存储值为零。 首次尝试访问其存储值后,将在 ID 中存储唯一正值。

构造函数

构造函数 说明
numpunct numpunct 类型的对象的构造函数。

Typedef

类型名称 说明
char_type 一种类型,此类型用于描述区域设置使用的字符。
string_type 一种类型,此类型描述包含 CharType 类型字符的字符串。

成员函数

成员函数 说明
decimal_point 返回要用作小数点的区域设置特定元素。
do_decimal_point 一种受保护的虚拟成员函数,通过调用此函数可返回要用作小数点的区域设置特定元素。
do_falsename 一种受保护的虚拟成员函数,通过调用此函数可返回要用作值 false 的文本表示形式的字符串。
do_grouping 一种受保护的虚拟成员函数,通过调用此函数可返回用于确定位数如何分组到任何小数点左边的区域设置特定规则。
do_thousands_sep 一种受保护的虚拟成员函数,通过调用此函数可返回要用作千位分隔符的区域设置特定元素。
do_truename 一种受保护的虚拟成员函数,通过调用此函数可返回要用作值 true 的文本表示形式的字符串。
falsename 返回要用作值 false 的文本表示形式的字符串。
grouping 返回用于确定位数如何分组到任何小数点左边的区域设置特定规则。
thousands_sep 返回要用作千位分隔符的区域设置特定元素。
truename 返回要用作值 true 的文本表示形式的字符串。

要求

标头:<locale>

命名空间: std

numpunct::char_type

一种类型,此类型用于描述区域设置使用的字符。

typedef CharType char_type;

备注

该类型是模板参数 CharType 的同义词。

numpunct::decimal_point

返回要用作小数点的区域设置特定元素。

CharType decimal_point() const;

返回值

要用作小数点的区域设置特定元素。

备注

此成员函数返回 do_decimal_point

示例

// 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

一种受保护的虚拟成员函数,通过调用此函数可返回要用作小数点的区域设置特定元素。

virtual CharType do_decimal_point() const;

返回值

要用作小数点的区域设置特定元素。

示例

请参阅 decimal_point 的示例,其中虚拟成员函数由 decimal_point 调用。

numpunct::do_falsename

受保护的虚拟成员函数将返回一个序列,以便用作值 false 的文本表示形式。

virtual string_type do_falsename() const;

返回值

一个包含要用作值 false 的文本表示形式的序列的字符串。

备注

该成员函数将返回字符串“false”以表示所有区域设置中的值 false

示例

请参阅 falsename 的示例,其中虚拟成员函数由 falsename 调用。

numpunct::do_grouping

一种受保护的虚拟成员函数,通过调用此函数可返回用于确定位数如何分组到任何小数点左边的区域设置特定规则。

virtual string do_grouping() const;

返回值

用于确定如何对任何小数点左侧的数字进行分组的区域设置特定规则。

注解

此受保护的虚拟成员函数可返回一个区域设置特定规则,用于确定如何对任何小数点左侧的数字进行分组。 该编码与 lconv::grouping 的编码相同。

示例

请参阅 grouping 的示例,其中虚拟成员函数由 grouping 调用。

numpunct::do_thousands_sep

一种受保护的虚拟成员函数,通过调用此函数可返回要用作千位分隔符的区域设置特定元素。

virtual CharType do_thousands_sep() const;

返回值

返回要用作千位分隔符的区域设置特定元素。

备注

此受保护的虚拟成员函数返回 CharType 类型的区域设置特定元素,以便用作任何小数点左侧的组分隔符。

示例

请参阅 thousands_sep 的示例,其中虚拟成员函数由 thousands_sep 调用。

numpunct::do_truename

一种受保护的虚拟成员函数,通过调用此函数可返回要用作值 true 的文本表示形式的字符串。

virtual string_type do_truename() const;

备注

要用作值 true 的文本表示形式的字符串。

所有区域设置返回字符串“true”以表示值 true

示例

请参阅 truename 的示例,其中虚拟成员函数由 truename 调用。

numpunct::falsename

返回要用作值 false 的文本表示形式的字符串。

string_type falsename() const;

返回值

一个包含要用作值 false 的文本表示形式的 CharType 序列的字符串。

注解

该成员函数将返回字符串“false”以表示所有区域设置中的值 false

此成员函数返回 do_falsename

示例

// 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

返回用于确定位数如何分组到任何小数点左边的区域设置特定规则。

string grouping() const;

返回值

用于确定如何对任何小数点左侧的数字进行分组的区域设置特定规则。

备注

此成员函数返回 do_grouping

示例

// 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

numpunct 类型的对象的构造函数。

explicit numpunct(size_t _Refs = 0);

参数

_Refs
用于指定对象的内存管理类型的整数值。

备注

_Refs 参数可能的值及其含义

  • 0:对象的生存期由包含该对象的区域设置管理。

  • 1:必须手动管理对象的生存期。

  • > 1:未定义这些值。

由于该析构函数受到保护,可能没有直接的示例。

构造函数通过 locale::facet(_Refs) 初始化其基对象。

numpunct::string_type

一种类型,此类型描述包含 CharType 类型字符的字符串。

typedef basic_string<CharType, Traits, Allocator> string_type;

备注

此类型描述 basic_string 类模板的专用化,该类模板的对象可存储标点序列的副本。

numpunct::thousands_sep

返回要用作千位分隔符的区域设置特定元素。

CharType thousands_sep() const;

返回值

要用作千位分隔符的区域设置特定元素。

备注

此成员函数返回 do_thousands_sep

示例

// 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

返回要用作值 true 的文本表示形式的字符串。

string_type falsename() const;

返回值

要用作值 true 的文本表示形式的字符串。

备注

此成员函数返回 do_truename

所有区域设置返回字符串“true”以表示值 true

示例

// 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

另请参阅

<区域设置>
facet 类
C++ 标准库中的线程安全