std:: ctype
|
Определено в заголовочном файле
<locale>
|
||
|
template
<
class
CharT
>
class ctype ; |
||
Класс
ctype
инкапсулирует возможности классификации символов. Все операции ввода через потоки, выполняемые с помощью
std::
basic_istream
<
CharT
>
используют
std::ctype<CharT>
локали, установленной в потоке, для идентификации пробельных символов при токенизации ввода. Операции вывода в поток применяют
std::ctype<CharT>::widen()
к узкосимвольным аргументам перед выводом.
Диаграмма наследования
Содержание |
Специализации
Стандартная библиотека гарантированно предоставляет следующие специализации (они должны быть реализованы любым объектом локали ):
|
Определено в заголовочном файле
<locale>
|
|
std::ctype<char>
|
предоставляет эквиваленты узких символов минимальной классификации локали "C". Эта специализация использует табличный поиск для классификации символов |
| std :: ctype < wchar_t > | предоставляет классификацию широких символов, соответствующую набору символов родной локали |
Вложенные типы
| Тип | Определение |
char_type
|
CharT
|
Члены данных
| Участник | Описание |
std::locale::id
id
[static]
|
идентификатор аспекта |
Функции-члены
создает новый
ctype
аспект
(публичная функция-член) |
|
уничтожает
ctype
аспект
(защищенная функция-член) |
|
вызывает
do_is
(публичная функция-член) |
|
вызывает
do_scan_is
(публичная функция-член) |
|
вызывает
do_scan_not
(публичная функция-член) |
|
вызывает
do_toupper
(публичная функция-член) |
|
вызывает
do_tolower
(публичная функция-член) |
|
вызывает
do_widen
(публичная функция-член) |
|
вызывает
do_narrow
(публичная функция-член) |
Защищенные функции-члены
|
[virtual]
|
классифицирует символ или последовательность символов
(виртуальная защищённая функция-член) |
|
[virtual]
|
находит первый символ в последовательности, соответствующий заданной классификации
(виртуальная защищённая функция-член) |
|
[virtual]
|
находит первый символ в последовательности, не соответствующий заданной классификации
(виртуальная защищённая функция-член) |
|
[virtual]
|
преобразует символ или символы в верхний регистр
(виртуальная защищённая функция-член) |
|
[virtual]
|
преобразует символ или символы в нижний регистр
(виртуальная защищённая функция-член) |
|
[virtual]
|
преобразует символ или символы из
char
в
CharT
(виртуальная защищённая функция-член) |
|
[virtual]
|
преобразует символ или символы из
CharT
в
char
(виртуальная защищённая функция-член) |
Унаследовано от 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
отличного от
ctype<char>
для токенизации CSV-файла:
#include <iostream> #include <locale> #include <sstream> struct csv_whitespace : std::ctype<wchar_t> { bool do_is(mask m, char_type c) const { if ((m & space) && c == L' ') return false; // space will NOT be classified as whitespace if ((m & space) && c == L',') return true; // comma will be classified as whitespace return ctype::do_is(m, c); // leave the rest to the base class } }; int main() { std::wstring in = L"Column 1,Column 2,Column 3\n123,456,789"; std::wstring token; std::wcout << "default locale:\n"; std::wistringstream s1(in); while (s1 >> token) std::wcout << " " << token << '\n'; std::wcout << "locale with modified ctype:\n"; std::wistringstream s2(in); csv_whitespace* my_ws = new csv_whitespace; s2.imbue(std::locale(s2.getloc(), my_ws)); while (s2 >> token) std::wcout << " " << 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
Смотрите также
|
специализация
std::ctype
для типа
char
(специализация шаблона класса) |
|
|
определяет категории классификации символов
(класс) |
|
|
представляет предоставляемую системой
std::ctype
для именованной локали
(шаблон класса) |