# std::numpunct_byname

< cpp‎ | locale

定义于头文件 `<locale>` |  |
template< class CharT > class numpunct_byname : public std::numpunct<CharT>; |  |

std::numpunct_byname 是 std::numpunct 平面，它封装在其构造时指定的 locale 的数值标点偏好。

标准库提供二个特化

定义于头文件 `<locale>`
std::numpunct_byname<char> | 窄字符 I/O 的本地环境限定 std::numpunct 平面
std::numpunct_byname<wchar_t> | 宽字符 I/O 的本地环境限定 std::numpunct 平面

### 成员类型

成员类型 | 定义
`char_type` | `CharT`
`string_type` | std::basic_string<CharT>

### 成员函数

(构造函数) | 构造新的 `numpunct_byname` 平面 (公开成员函数)
(析构函数) | 析构 `numpunct_byname` 平面 (受保护成员函数)

## std::numpunct_byname::numpunct_byname

explicit numpunct_byname( const char* name, std::size_t refs = 0 ); |  |
explicit numpunct_byname( const std::string& name, std::size_t refs = 0 ); |  | (C++11 起)

为名为 `name` 的本地环境构造新的 `std::numpunct_byname` 平面。

`refs` 用于资源管理：在销毁最后一个保有平面的 std::locale 对象时，若 refs == 0 ，则实现销毁平面对象。否则，不销毁对象。

### 参数

name | - | 本地环境的名称
refs | - | 链接到该平面的引用数

## std::numpunct_byname::~numpunct_byname

protected: ~numpunct_byname(); |  |

销毁平面。

## 继承自 std::numpunct

### 成员类型

成员类型 | 定义
`char_type` | `charT`
`string_type` | std::basic_string<charT>

### 成员函数

decimal_point | 调用 `do_decimal_point` (`std::numpunct<CharT>` 的公开成员函数)
thousands_sep | 调用 `do_thousands_sep` (`std::numpunct<CharT>` 的公开成员函数)
grouping | 调用 `do_grouping` (`std::numpunct<CharT>` 的公开成员函数)
truename falsename | 调用 `do_truename` 或 `do_falsename` (`std::numpunct<CharT>` 的公开成员函数)

### 受保护成员函数

do_decimal_point [虚] | 提供用作小数点的字符 (`std::numpunct<CharT>` 的虚受保护成员函数)
do_thousands_sep [虚] | 提供用作千分隔符的字符 (`std::numpunct<CharT>` 的虚受保护成员函数)
do_grouping [虚] | 提供一对千分隔符之间的位数 (`std::numpunct<CharT>` 的虚受保护成员函数)
do_truename do_falsename [虚] | 提供用作布尔 true 和 false 名称的字符串 (`std::numpunct<CharT>` 的虚受保护成员函数)

### 成员对象

static std::locale::id id | locale 的 id (公开成员对象)

### 示例

此示例演示如何应用另一语言的数值标点规则而不更改 locale 的剩余部分。

    #include <iostream>
    #include <locale>
    int main()
    {
        const double number = 1000.25;
        std::wcout << L"default locale: " << number << L'\n';
        std::wcout.imbue(std::locale(std::wcout.getloc(),
                                     new std::numpunct_byname<wchar_t>("ru_RU.UTF8")));
        std::wcout << L"default locale with russian numpunct: " << number << L'\n';
    }

输出：

    default locale: 1000.25
    default locale with russian numpunct: 1 000,25

### 参阅

numpunct | 定义数值标点规则 (类模板)