std::moneypunct_byname
来自 cppreference.com
定义在头文件 <locale> 中 |
||
template< class CharT, bool Intl = false > class moneypunct_byname : public std::moneypunct<CharT, Intl>; |
||
std::moneypunct_byname
是一个 std::moneypunct 方面,它封装了在构造时指定的区域设置的货币格式首选项。
内容 |
[编辑] 特化
标准库保证提供满足以下类型要求的每个特化
-
CharT
是 char 和 wchar_t 之一,以及 -
Intl
是 bool 参数上的一个可能的特化。
[编辑] 成员类型
成员类型 | 定义 |
pattern
|
std::money_base::pattern |
string_type
|
std::basic_string<CharT> |
[编辑] 成员函数
(构造函数) |
构造一个新的 moneypunct_byname 方面(公共成员函数) |
(析构函数) |
销毁一个 moneypunct_byname 方面(受保护的成员函数) |
std::moneypunct_byname::moneypunct_byname
explicit moneypunct_byname( const char* name, std::size_t refs = 0 ); |
||
explicit moneypunct_byname( const std::string& name, std::size_t refs = 0 ); |
(自 C++11 起) | |
为具有 name 的区域设置构造一个新的 std::moneypunct_byname
方面。
refs 用于资源管理:如果 refs == 0,则实现会在最后一个 std::locale 对象持有它时销毁该方面。否则,该对象不会被销毁。
参数
name | - | 区域设置的名称 |
refs | - | 链接到方面的引用数量 |
std::moneypunct_byname::~moneypunct_byname
protected: ~moneypunct_byname(); |
||
销毁该方面。
从 std::moneypunct 继承
成员类型
成员类型 | 定义 |
char_type
|
CharT
|
string_type
|
std::basic_string<CharT> |
成员函数
调用 do_decimal_point ( std::moneypunct<CharT,International> 的公共成员函数) | |
调用 do_thousands_sep ( std::moneypunct<CharT,International> 的公共成员函数) | |
调用 do_grouping ( std::moneypunct<CharT,International> 的公共成员函数) | |
调用 do_curr_symbol ( std::moneypunct<CharT,International> 的公共成员函数) | |
调用 do_positive_sign 或 do_negative_sign ( std::moneypunct<CharT,International> 的公共成员函数) | |
调用 do_frac_digits ( std::moneypunct<CharT,International> 的公共成员函数) | |
调用 do_pos_format /do_neg_format ( std::moneypunct<CharT,International> 的公共成员函数) |
受保护的成员函数
[虚拟] |
提供用作小数点的字符 ( std::moneypunct<CharT,International> 的虚拟受保护成员函数) |
[虚拟] |
提供用作千位分隔符的字符 ( std::moneypunct<CharT,International> 的虚拟受保护成员函数) |
[虚拟] |
提供每对千位分隔符之间的数字数量 ( std::moneypunct<CharT,International> 的虚拟受保护成员函数) |
[虚拟] |
提供用作货币标识符的字符串 ( std::moneypunct<CharT,International> 的虚拟受保护成员函数) |
提供用于指示正值或负值的字符串 ( std::moneypunct<CharT,International> 的虚拟受保护成员函数) | |
[虚拟] |
指定小数点后显示的位数 ( std::moneypunct<CharT,International> 的虚拟受保护成员函数) |
提供货币值的格式化模式 ( std::moneypunct<CharT,International> 的虚拟受保护成员函数) |
成员常量
成员 | 定义 |
const bool intl (static) |
国际化
|
成员对象
static std::locale::id id |
区域设置的 id (公共成员对象) |
从 std::money_base 继承而来
成员类型 | 定义 |
enum part { none, space, symbol, sign, value }; | 无作用域枚举类型 |
struct pattern { char field[4]; }; | 货币格式类型 |
枚举常量 | 定义 |
none
|
空格是允许的,但不是必需的,除非在最后一个位置,空格不允许 |
space
|
需要一个或多个空格字符 |
symbol
|
需要由 std::moneypunct::curr_symbol 返回的字符序列 |
sign
|
需要由 std::moneypunct::positive_sign 或 std::moneypunct::negative_sign 返回的第一个字符 |
value
|
需要绝对的数值货币值 |
[编辑] 示例
此示例演示了如何在不更改区域设置的其他部分的情况下,应用另一种语言的货币格式化规则。
运行此代码
#include <iomanip> #include <iostream> #include <locale> int main() { long double mon = 1234567; std::locale::global(std::locale("en_US.utf8")); std::wcout.imbue(std::locale()); std::wcout << L"american locale: " << std::showbase << std::put_money(mon) << '\n'; std::wcout.imbue(std::locale(std::wcout.getloc(), new std::moneypunct_byname<wchar_t>("ru_RU.utf8"))); std::wcout << L"american locale with russian moneypunct: " << std::put_money(mon) << '\n'; }
输出
american locale: $12,345.67 american locale with russian moneypunct: 12 345.67 руб
[编辑] 另请参见
定义了 std::money_get 和 std::money_put 使用的货币格式参数 (类模板) |