std::ctype<char>::is
Определено в заголовке <locale> | ||
|---|---|---|
bool is( mask m, char c ) const; | (1) | |
const char* is( const char* low, const char* high, mask* vec ) const; | (2) |
1) Проверяет, классифицируется ли символ
c по маске m в соответствии с таблицей классификации, возвращаемой функцией-членом table(). Эффективно вычисляет table()[(unsigned char)c] & m.
2) Для каждого символа в массиве символов
[low, high), считывает полную маску классификации из таблицы классификации, возвращаемой функцией-членом table() (то есть, вычисляет table()[(unsigned char)*p] и сохраняет её в соответствующем элементе массива, на который указывает vec.Если (unsigned char)c >= std::ctype<char>::table_size, то вместо table()[(unsigned char)c] подставляется значение, определённое реализацией, возможно, различное для разных значений c.
Параметры
| c | - | символ для классификации |
| m | - | маска, используемая для классификации отдельного символа |
| low | - | указатель на первый символ в массиве символов для классификации |
| high | - | указатель на один элемент за концом массива символов для классификации |
| vec | - | указатель на первый элемент массива масок для заполнения |
Возвращаемое значение
1)
true если c классифицируется по m в table(), false в противном случае.
2)
high
Примечания
В отличие от шаблонного класса std::ctype, эта специализация не выполняет виртуальный вызов при классификации символов. Для настройки поведения производный класс может предоставить нестандартную таблицу классификации конструктору базового класса.
Пример
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 28 | C++98 | перегрузка (2) копировала значения из vec в table(),что является обратным предполагаемому поведению | исправлено |
См. также
|
[virtual] | классифицирует символ или последовательность символов (виртуальная защищённая функция-член std::ctype<CharT>) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/locale/ctype_char/is