12.4.3 刻面numericpunctuation
1.模板类numpunct
模板numpunct指定了数值的标点符号。实例化类numpunct<wchar_t>和numpunct<char>可提供典型的“C”数值格式,即它们包含的信息等效于包含在类locale和那些使用widen()获取的宽字符。
数值格式的语法如下所示:digit代表参数fmtflags确定的radix集合;使用刻面ctype<charT>确定的空格(whitespace);并且thousands-sep和decimal-point是相应的numpunct<charT>成员的相应结果。整型值具有以下格式:
浮点类型的值具有特点:
thousands-seps决定数字的数目是由do_grouping()决定的。对于数值分解,如果数字部分不包含thousands-separators,那么没有分组常量被应用。
下面介绍模板类numpunct的成员函数。
函数返回值是do_decimal_point()。decimal_point()函数返回一个元素。该元素用作十进制小数点。
函数返回值是一个实例化locale类元素。该元素用作一个千位分隔符。
函数返回值是一个字符串。该元素可作为一个其值为true的文本表达式。
函数返回值是一个字符。该元素可用作十进制基数分隔符。必要的实例化返回‘.’或L‘.’。
函数返回值是一个字符。该字符串用作数字组的分隔符。必要的实例化返回‘,’或L‘,’。
函数返回值是一个字符串(basic_string<char>vec)。该字符串可用作一个整型值的向量。向量的每个元素代表数字数目。规则是:判断任何十进制小数点左边有多少个数字被划分为组。起始位置0是最右边的组。如果vec.size()<=i,数字是同一组;如果(i<0)||vec[i]<=0||vec[i]==CHAR_MAX),数字组的大小是无限制的。
必要的实例化返回空字符串,表示没有分组。
函数返回值是字符串表达式,其内容为“true”和“false”两种形式,或L“true”和L“false”。
2.类模板numpunct_byname
下面以例12-10来说明numeric punctuation的使用方法。
例12-10
例12-10的执行结果为: