Spec-Zone.ru › C++

std::moneypunct_byname

Определён в заголовочном файле <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)

Создаёт новый фасет std::moneypunct_byname для локали с name.

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>

Данные-члены

Член Описание
std::locale::id id [статический] идентификатор фасета
constbool intl [статический] International

Функции-члены

decimal_point
вызывает do_decimal_point
(открытая функция-член std::moneypunct<CharT,International>)
thousands_sep
вызывает do_thousands_sep
(открытая функция-член std::moneypunct<CharT,International>)
grouping
вызывает do_grouping
(открытая функция-член std::moneypunct<CharT,International>)
curr_symbol
вызывает do_curr_symbol
(открытая функция-член std::moneypunct<CharT,International>)
positive_signnegative_sign
вызывает do_positive_sign или do_negative_sign
(открытая функция-член std::moneypunct<CharT,International>)
frac_digits
вызывает do_frac_digits
(открытая функция-член std::moneypunct<CharT,International>)
pos_formatneg_format
вызывает do_pos_format/do_neg_format
(открытая функция-член std::moneypunct<CharT,International>)

Защищённые функции-члены

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_signdo_negative_sign
[виртуальная]
возвращает строку, обозначающую положительное или отрицательное значение
(виртуальная защищённая функция-член std::moneypunct<CharT,International>)
do_frac_digits
[виртуальная]
возвращает количество цифр, отображаемых после десятичного разделителя
(виртуальная защищённая функция-член std::moneypunct<CharT,International>)
do_pos_formatdo_neg_format
[виртуальная]
возвращает шаблон форматирования денежных значений
(виртуальная защищённая функция-член std::moneypunct<CharT,International>)

Унаследовано от std::money_base

Вложенные типы

Тип Определение
enumpart{none,space,symbol,sign,value}; необласть перечисления
structpattern{charfield[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 руб

См. также

moneypunct
задаёт параметры форматирования денежных значений, используемые std::money_get и std::money_put
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/locale/moneypunct_byname

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API