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 typenamestd::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 );
(начиная с 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] идентификатор фасета

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

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>)

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

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>)
do_is
[virtual]
классифицирует символ или последовательность символов
(виртуальная защищённая функция-член std::ctype<CharT>)
do_scan_is
[virtual]
находит первый символ в последовательности, соответствующий заданной классификации
(виртуальная защищённая функция-член std::ctype<CharT>)
do_scan_not
[virtual]
находит первый символ в последовательности, не соответствующий заданной классификации
(виртуальная защищённая функция-член std::ctype<CharT>)

Унаследовано от std::ctype<char> (только если CharT является типом char)

Вложенные типы

Тип Определение
char_type char

Данные-члены

Член Описание
std::locale::id id [static] идентификатор фасета
conststd::size_t table_size [static] размер таблицы классификации, не менее 256

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

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

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

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>)

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

См. также

ctype
определяет таблицы классификации символов
(шаблон класса)
ctype<char>
специализация std::ctype для типа char
(специализация шаблона класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/locale/ctype_byname

Spec-Zone.ru

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