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 | typenamestd::ctype<CharT>::mask |
Функции-члены
создаёт новый фасет ctype_byname (открытая функция-член) |
|
уничтожает фасет 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 ); | (начиная с 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] | идентификатор фасета |
conststd::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 (перечисление, целочисленный тип или битовое множество) |
Константы-члены
|
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, обозначающее классификацию пробельных символов (открытая статическая константа-член) |
|
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 | в определении mask отсутствовал спецификатор typename | добавлен |
См. также
| определяет таблицы классификации символов (шаблон класса) |
|
специализация std::ctype для типа char (специализация шаблона класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/locale/ctype_byname