std:: money_put
|
Определено в заголовочном файле
<locale>
|
||
|
template
<
class
CharT,
|
||
Класс
std::money_put
инкапсулирует правила форматирования денежных значений в строки. Стандартный манипулятор ввода-вывода
std::put_money
использует аспект
std::money_put
локали потока ввода-вывода.
Диаграмма наследования
Если специализация
std::money_put
не гарантированно предоставляется стандартной библиотекой (см. ниже), поведение её функций
put()
и
do_put()
не гарантируется в соответствии со спецификацией.
Содержание |
Специализации
Стандартная библиотека гарантированно предоставляет следующие специализации (они должны быть реализованы любым объектом локали ):
|
Определено в заголовочном файле
<locale>
|
|
| std :: money_put < char > | создает строковые представления денежных значений для узких символов |
| std :: money_put < wchar_t > | создает строковые представления денежных значений для широких символов |
Кроме того, стандартная библиотека также гарантированно предоставляет каждую специализацию, удовлетворяющую следующим требованиям к типам:
-
CharTявляется одним из- char ,
- wchar_t , и
- любым другим определённым реализацией типом контейнера символов , который удовлетворяет требованиям для символа, на котором могут быть инстанцированы любые из компонентов iostream ; и
-
OutputItдолжен удовлетворять требованиям LegacyOutputIterator .
Вложенные типы
| Тип | Определение |
char_type
|
CharT
|
string_type
|
std:: basic_string < CharT > |
iter_type
|
OutputIt
|
Члены данных
| Участник | Описание |
std::locale::id
id
[static]
|
идентификатор аспекта |
Функции-члены
создаёт новый
money_put
фасе́т
(публичная функция-член) |
|
вызывает
do_put
(публичная функция-член) |
Защищенные функции-члены
деструктор для
money_put
фасета
(защищенная функция-член) |
|
|
[virtual]
|
форматирует денежное значение и записывает в выходной поток
(виртуальная защищенная функция-член) |
Пример
#include <iomanip> #include <iostream> #include <iterator> #include <locale> int main() { // использование манипулятора ввода-вывода std::cout.imbue(std::locale("en_US.UTF-8")); std::cout << "American locale: " << std::showbase << std::put_money(12345678.9) << '\n'; // прямое использование фасета std::cout.imbue(std::locale("de_DE.UTF-8")); std::cout << "German locale: "; auto& f = std::use_facet<std::money_put<char>>(std::cout.getloc()); f.put({std::cout}, false, std::cout, std::cout.fill(), 12345678.9); std::cout << '\n'; }
Вывод:
American locale: $123,456.79 German locale: 123.456,79 €
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 427 | C++98 |
money_put
гарантированно принимал любой
CharT
, который
удовлетворяет требованиям для символа, на котором могут быть инстанцированы любые компоненты iostream |
гарантирует принятие только
char
,
wchar_t и других определяемых реализацией символьных типов |
| LWG 2392 | C++98 |
только символьный тип
CharT
мог быть
гарантированно принят
money_put
|
может гарантировать принятие определяемых
реализацией типов символьных контейнеров |
Смотрите также
|
определяет параметры форматирования денежных значений, используемые
std::money_get
и
std::money_put
(шаблон класса) |
|
|
анализирует и формирует денежное значение из входной последовательности символов
(шаблон класса) |
|
|
(C++11)
|
форматирует и выводит денежное значение
(шаблон функции) |