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 |
Члены-функции
| (конструктор) | создаёт новый 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>
Типы членов
| Тип члена | Определение |
|---|---|
char_type | CharT |
Члены-объекты
| Название члена | Тип |
|---|---|
| static std::locale::id id
[static] | id локали (публичная статическая константа-член) |
Если |
|
| static const std::size_t table_size
[static] | размер таблицы классификации, по крайней мере 256 (публичная статическая константа-член) |
Функции-члены
вызывает 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>) |
|
Если |
|
| получает таблицу классификации символов (публичная функция-член std::ctype<char>) |
|
|
[static] | получает таблицу классификации символов локали "C" (публичная статическая функция-член std::ctype<char>) |
Защищённые функции-члены
|
[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_base
Типы-члены
| Тип | Определение |
|---|---|
mask | неопределённый тип битовой маски (перечисление, целочисленный тип или битовая установка) |
Константы-члены
| 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> до C++11 была указана в заголовочном файле как отдельная запись <locale>. Она была удалена в LWG issue 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 (специализация шаблона класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/locale/ctype_byname