std:: ctype <char>
|
Определено в заголовочном файле
<locale>
|
||
|
template
<>
class ctype < char > ; |
||
Эта специализация std::ctype инкапсулирует функции классификации символов для типа char . В отличие от универсального std::ctype , который использует виртуальные функции, эта специализация использует табличный поиск для классификации символов (что обычно быстрее).
Базовый класс
std::ctype
<
char
>
реализует классификацию символов, эквивалентную минимальной локали "C". Правила классификации могут быть расширены или изменены при создании с аргументом нестандартной таблицы классификации, при создании как
std::
ctype_byname
<
char
>
или как пользовательский производный фасет. Все функции форматированного ввода
std::istream
обязаны использовать
std::ctype
<
char
>
для классификации символов во время разбора ввода.
Диаграмма наследования
Содержание |
Вложенные типы
| Тип | Определение |
char_type
|
char |
Члены данных
| Участник | Описание |
std::locale::id
id
[static]
|
идентификатор аспекта |
const
std::
size_t
table_size
[static]
|
размер таблицы классификации, не менее 256 |
Функции-члены
|
создает новый
ctype
<
char
>
аспект
(публичная функция-член) |
|
|
уничтожает
ctype
<
char
>
аспект
(защищенная функция-член) |
|
|
получает таблицу классификации символов
(публичная функция-член) |
|
|
[static]
|
получает таблицу классификации символов локали "C"
(публичная статическая функция-член) |
|
классифицирует символ или последовательность символов, используя таблицу классификации
(публичная функция-член) |
|
|
находит первый символ в последовательности, соответствующий заданной классификации, используя таблицу классификации
(публичная функция-член) |
|
|
находит первый символ в последовательности, не соответствующий заданной классификации, используя таблицу классификации
(публичная функция-член) |
|
вызывает
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
(публичная статическая константа-член) |
Пример
Следующий пример демонстрирует модификацию ctype < char > для токенизации значений, разделенных запятыми:
#include <cstddef> #include <iostream> #include <locale> #include <sstream> #include <vector> // This ctype facet classifies commas and endlines as whitespace struct csv_whitespace : std::ctype<char> { static const mask* make_table() { // make a copy of the "C" locale table static std::vector<mask> v(classic_table(), classic_table() + table_size); v[','] |= space; // comma will be classified as whitespace v[' '] &= ~space; // space will not be classified as whitespace return &v[0]; { csv_whitespace(std::size_t refs = 0) : ctype(make_table(), false, refs) {} }; int main() { std::string in = "Column 1,Column 2,Column 3\n123,456,789"; std::string token; std::cout << "Default locale:\n"; std::istringstream s1(in); while (s1 >> token) std::cout << " " << token << '\n'; std::cout << "Locale with modified ctype:\n"; std::istringstream s2(in); s2.imbue(std::locale(s2.getloc(), new csv_whitespace)); while (s2 >> token) std::cout << " " << token << '\n'; }
Вывод:
Default locale: Column 1,Column 2,Column 3 123,456,789 Locale with modified ctype: Column 1 Column 2 Column 3 123 456 789
Отчёты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 695 | C++98 |
table()
и
classic_table()
были защищёнными функциями-членами
|
сделаны публичными |
Смотрите также
|
определяет таблицы классификации символов
(шаблон класса) |
|
|
определяет категории классификации символов
(класс) |
|
|
представляет предоставляемую системой
std::ctype
для именованной локали
(шаблон класса) |