std:: ctype_byname
|
Определено в заголовочном файле
<locale>
|
||
|
template
<
class
CharT
>
class ctype_byname : public std:: ctype < CharT > ; |
||
std::ctype_byname
— это фасет
std::ctype
, который инкапсулирует правила классификации символов для локали, указанной при его создании.
Содержание |
Специализации
Стандартная библиотека гарантированно предоставляет следующие специализации:
|
Определено в заголовочном файле
<locale>
|
|
| std :: ctype_byname < char > | предоставляет классификацию узких символов (использует табличный поиск для классификации символов) |
| std :: ctype_byname < wchar_t > | предоставляет классификацию широких символов |
Вложенные типы
| Тип | Определение |
mask
|
typename std:: ctype < CharT > :: mask |
Функции-члены
|
(constructor)
|
создает новый
ctype_byname
фацет
(публичная функция-член) |
|
(destructor)
|
уничтожает
ctype_byname
фацет
(защищенная функция-член) |
std::ctype_byname:: ctype_byname
|
explicit
ctype_byname
(
const
char
*
name,
std::
size_t
refs
=
0
)
;
|
||
|
explicit
ctype_byname
(
const
std::
string
&
name,
std::
size_t
refs
=
0
)
;
|
(since C++11) | |
Создает новый фасет
std::ctype_byname
для локали с именем
name
.
refs используется для управления ресурсами: если refs == 0 , реализация уничтожает фасет, когда уничтожается последний объект std::locale , который его содержит. В противном случае объект не уничтожается.
Параметры
| name | - | имя локали |
| refs | - | количество ссылок, связывающих с фасетом |
std::ctype_byname:: ~ctype_byname
|
protected
:
~ctype_byname ( ) ; |
||
Уничтожает фацет.
Унаследовано от
std::
ctype
<CharT>
(только если
CharT
не является
char
)
Вложенные типы
| Тип | Определение |
char_type
|
CharT
|
Члены данных
| Член | Описание |
std::locale::id
id
[static]
|
идентификатор аспекта |
Функции-члены
вызывает
do_is
(публичная функция-член
std::ctype<CharT>
)
|
|
вызывает
do_scan_is
(публичная функция-член
std::ctype<CharT>
)
|
|
вызывает
do_scan_not
(публичная функция-член
std::ctype<CharT>
)
|
|
вызывает
do_toupper
(публичная функция-член
std::ctype<CharT>
)
|
|
вызывает
do_tolower
(публичная функция-член
std::ctype<CharT>
)
|
|
вызывает
do_widen
(публичная функция-член
std::ctype<CharT>
)
|
|
вызывает
do_narrow
(публичная функция-член
std::ctype<CharT>
)
|
Защищённые функции-члены
|
[virtual]
|
преобразует символ или символы в верхний регистр
(виртуальная защищённая функция-член
std::ctype<CharT>
)
|
|
[virtual]
|
преобразует символ или символы в нижний регистр
(виртуальная защищённая функция-член
std::ctype<CharT>
)
|
|
[virtual]
|
преобразует символ или символы из
char
в
CharT
(виртуальная защищённая функция-член
std::ctype<CharT>
)
|
|
[virtual]
|
преобразует символ или символы из
CharT
в
char
(виртуальная защищённая функция-член
std::ctype<CharT>
)
|
|
[virtual]
|
классифицирует символ или последовательность символов
(виртуальная защищённая функция-член
std::ctype<CharT>
)
|
|
[virtual]
|
находит первый символ в последовательности, соответствующий заданной классификации
(виртуальная защищённая функция-член
std::ctype<CharT>
)
|
|
[virtual]
|
находит первый символ в последовательности, не соответствующий заданной классификации
(виртуальная защищённая функция-член
std::ctype<CharT>
)
|
Унаследовано от
std::
ctype<char>
(только если
CharT
является
char
)
Вложенные типы
| Тип | Определение |
char_type
|
char |
Члены данных
| Член | Описание |
std::locale::id
id
[static]
|
идентификатор аспекта |
const
std::
size_t
table_size
[static]
|
размер таблицы классификации, не менее 256 |
Функции-члены
|
получает таблицу классификации символов
(публичная функция-член
std::ctype
<char>
)
|
|
|
[static]
|
получает таблицу классификации символов локали "C"
(публичная статическая функция-член
std::ctype
<char>
)
|
|
классифицирует символ или последовательность символов, используя таблицу классификации
(публичная функция-член
std::ctype
<char>
)
|
|
|
находит первый символ в последовательности, соответствующий заданной классификации, используя таблицу классификации
(публичная функция-член
std::ctype
<char>
)
|
|
|
находит первый символ в последовательности, не соответствующий заданной классификации, используя таблицу классификации
(публичная функция-член
std::ctype
<char>
)
|
|
вызывает
do_toupper
(публичная функция-член
std::ctype<CharT>
)
|
|
вызывает
do_tolower
(публичная функция-член
std::ctype<CharT>
)
|
|
вызывает
do_widen
(публичная функция-член
std::ctype<CharT>
)
|
|
вызывает
do_narrow
(публичная функция-член
std::ctype<CharT>
)
|
Защищённые функции-члены
|
[virtual]
|
преобразует символ или символы в верхний регистр
(виртуальная защищённая функция-член
std::ctype<CharT>
)
|
|
[virtual]
|
преобразует символ или символы в нижний регистр
(виртуальная защищённая функция-член
std::ctype<CharT>
)
|
|
[virtual]
|
преобразует символ или символы из
char
в
CharT
(виртуальная защищённая функция-член
std::ctype<CharT>
)
|
|
[virtual]
|
преобразует символ или символы из
CharT
в
char
(виртуальная защищённая функция-член
std::ctype<CharT>
)
|
Унаследовано от std:: ctype_base
Вложенные типы
| Тип | Определение |
mask
|
неуказанный BitmaskType тип (перечисление, целочисленный тип или bitset) |
Константы-члены
|
space
[static]
|
значение
mask
идентифицирующее классификацию пробельных символов
(публичная статическая константа-член) |
|
print
[static]
|
значение
mask
идентифицирующее классификацию печатных символов
(публичная статическая константа-член) |
|
cntrl
[static]
|
значение
mask
идентифицирующее классификацию управляющих символов
(публичная статическая константа-член) |
|
upper
[static]
|
значение
mask
идентифицирующее классификацию символов верхнего регистра
(публичная статическая константа-член) |
|
lower
[static]
|
значение
mask
идентифицирующее классификацию символов нижнего регистра
(публичная статическая константа-член) |
|
alpha
[static]
|
значение
mask
идентифицирующее классификацию алфавитных символов
(публичная статическая константа-член) |
|
digit
[static]
|
значение
mask
идентифицирующее классификацию цифровых символов
(публичная статическая константа-член) |
|
punct
[static]
|
значение
mask
идентифицирующее классификацию знаков пунктуации
(публичная статическая константа-член) |
|
xdigit
[static]
|
значение
mask
идентифицирующее классификацию шестнадцатеричных цифр
(публичная статическая константа-член) |
|
blank
[static]
(C++11)
|
значение
mask
идентифицирующее классификацию пробельных символов (blank)
(публичная статическая константа-член) |
|
alnum
[static]
|
alpha
|
digit
(публичная статическая константа-член) |
|
graph
[static]
|
alnum
|
punct
(публичная статическая константа-член) |
Примечания
std :: ctype_byname < char > был некорректно объявлен как явная специализация в синопсисе <locale> , и это объявление было удалено в результате решения проблемы LWG 1298 , но он остается обязательной специализацией, так же как и std :: ctype_byname < wchar_t > .
Пример
#include <iostream> #include <locale> int main() { wchar_t c = L'\u00de'; // capital letter thorn std::locale loc("C"); std::cout << "isupper('Þ', C locale) returned " << std::boolalpha << std::isupper(c, loc) << '\n'; loc = std::locale(loc, new std::ctype_byname<wchar_t>("en_US.utf8")); std::cout << "isupper('Þ', C locale with Unicode ctype) returned " << std::boolalpha << std::isupper(c, loc) << '\n'; }
Вывод:
isupper('Þ', C locale) returned false
isupper('Þ', C locale with Unicode ctype) returned true
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 16 | C++98 |
определение явной специализации
std
::
ctype_byname
<
char
>
некорректно указывало имя и список параметров
do_narrow
|
исправлено |
| LWG 616 | C++98 |
в определении
typename
отсутствовал дизамбигуатор для
mask
|
добавлен |
Смотрите также
|
определяет таблицы классификации символов
(шаблон класса) |
|
|
специализация
std::ctype
для типа
char
(специализация шаблона класса) |