std:: numpunct
|
Определено в заголовочном файле
<locale>
|
||
|
template
<
class
CharT
>
class numpunct ; |
||
Фасет
std::numpunct
инкапсулирует предпочтения числовой пунктуации. Операции потокового ввода-вывода используют
std::numpunct
через
std::num_get
и
std::num_put
для разбора числового ввода и форматирования числового вывода.
Числа, поддерживаемые
std::numpunct
, имеют формат, описанный ниже. Здесь
digit
представляет систему счисления, заданную значением аргумента
fmtflags
,
thousands-sep
и
decimal-point
являются результатами функций
thousands_sep()
и
decimal_point()
соответственно.
Формат целочисленных значений следующий:
integer ::= [sign] units sign ::= plusminus plusminus ::= '+' | '-' units ::= digits [thousands-sep units] digits ::= digit [digits]
Количество цифр между
thousand-sep
(максимальный размер
digits
) задаётся результатом вызова
grouping()
.
Формат значений с плавающей точкой следующий:
floatval ::= [sign] units [decimal-point [digits]] [e [sign] digits] |
[sign] decimal-point digits [e [sign] digits]
e ::= 'e' | 'E'
Диаграмма наследования
Содержание |
Специализации
Стандартная библиотека гарантированно предоставляет следующие специализации (они должны быть реализованы любым объектом локали ):
|
Определено в заголовке
<locale>
|
|
| std :: numpunct < char > | предоставляет эквиваленты настроек локали "C" |
| std :: numpunct < wchar_t > | предоставляет широкосимвольные эквиваленты настроек локали "C" |
Вложенные типы
| Тип | Определение |
char_type
|
CharT
|
string_type
|
std:: basic_string < CharT > |
Члены данных
| Участник | Описание |
std::locale::id
id
[static]
|
идентификатор аспекта |
Функции-члены
создает новый
numpunct
фасет
(публичная функция-член) |
|
уничтожает
numpunct
фасет
(защищенная функция-член) |
|
вызывает
do_decimal_point
(публичная функция-член) |
|
вызывает
do_thousands_sep
(публичная функция-член) |
|
вызывает
do_grouping
(публичная функция-член) |
|
вызывает
do_truename
или
do_falsename
(публичная функция-член) |
Защищенные функции-члены
|
[virtual]
|
предоставляет символ для использования в качестве десятичной точки
(виртуальная защищенная функция-член) |
|
[virtual]
|
предоставляет символ для использования в качестве разделителя тысяч
(виртуальная защищенная функция-член) |
|
[virtual]
|
предоставляет количество цифр между каждой парой разделителей тысяч
(виртуальная защищенная функция-член) |
|
[virtual]
|
предоставляет строку для использования в качестве имени булевых значений
true
и
false
(виртуальная защищенная функция-член) |
Пример
Следующий пример изменяет строковые представления true и false :
#include <iostream> #include <locale> struct french_bool : std::numpunct<char> { string_type do_truename() const override { return "vrai"; } string_type do_falsename() const override { return "faux"; } }; int main() { std::cout << "default locale: " << std::boolalpha << true << ", " << false << '\n'; std::cout.imbue(std::locale(std::cout.getloc(), new french_bool)); std::cout << "locale with modified numpunct: " << std::boolalpha << true << ", " << false << '\n'; }
Вывод:
default locale: true, false locale with modified numpunct: vrai, faux
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 338 | C++98 |
токен
sign
допускал необязательный пробел после
+
или
-
|
удалён пробел |
Смотрите также
|
создает аспект numpunct для указанной локали
(шаблон класса) |