Spec-Zone.ru › C++

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 локали
(публичная статическая константа-член)
Если CharT является char, следующий член std::ctype<char> наследуется
static const std::size_t table_size
[static]
размер таблицы классификации, по крайней мере 256
(публичная статическая константа-член)

Функции-члены

is
вызывает do_is
(публичная функция-член std::ctype<CharT>)
scan_is
вызывает do_scan_is
(публичная функция-член std::ctype<CharT>)
scan_not
вызывает do_scan_not
(публичная функция-член std::ctype<CharT>)
toupper
вызывает do_toupper
(публичная функция-член std::ctype<CharT>)
tolower
вызывает do_tolower
(публичная функция-член std::ctype<CharT>)
widen
вызывает do_widen
(публичная функция-член std::ctype<CharT>)
narrow
вызывает do_narrow
(публичная функция-член std::ctype<CharT>)
Если CharT является char, следующие члены std::ctype<char> наследуются
table
получает таблицу классификации символов
(публичная функция-член std::ctype<char>)
classic_table
[static]
получает таблицу классификации символов локали "C"
(публичная статическая функция-член std::ctype<char>)

Защищённые функции-члены

do_toupper
[virtual]
преобразует символ или символы в верхний регистр
(виртуальная защищённая функция-член std::ctype<CharT>)
do_tolower
[virtual]
преобразует символ или символы в нижний регистр
(виртуальная защищённая функция-член std::ctype<CharT>)
do_widen
[virtual]
преобразует символ или символы из char в CharT
(виртуальная защищённая функция-член std::ctype<CharT>)
do_narrow
[virtual]
преобразует символ или символы из CharT в char
(виртуальная защищённая функция-член std::ctype<CharT>)
Если CharT является char, следующие члены std::ctype НЕ наследуются
do_is
[virtual]
классифицирует символ или последовательность символов
(виртуальная защищённая функция-член std::ctype<CharT>)
do_scan_is
[virtual]
находит первый символ в последовательности, который соответствует заданной классификации
(виртуальная защищённая функция-член std::ctype<CharT>)
do_scan_not
[virtual]
находит первый символ в последовательности, который не соответствует заданной классификации
(виртуальная защищённая функция-член std::ctype<CharT>)
END_OF_DOCUMENT_MARKER

Унаследованно от 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 добавлено

См. также

ctype
определяет таблицы классификации символов
(шаблон класса)
ctype<char>
специализация 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API