Namespaces
Variants

std:: isxdigit

From cppreference.net
Определено в заголовочном файле <cctype>
int isxdigit ( int ch ) ;

Проверяет, является ли заданный символ шестнадцатеричной цифрой ( 0123456789ABCDEFabcdef ).

Поведение не определено, если значение ch не представимо в виде unsigned char и не равно EOF .

Содержание

Параметры

ch - символ для классификации

Возвращаемое значение

Ненулевое значение, если символ является шестнадцатеричным числовым символом, и ноль в противном случае.

Примечания

std::isdigit и std::isxdigit являются единственными стандартными функциями классификации узких символов, на которые не влияет текущая установленная локаль C. хотя некоторые реализации (например, Microsoft в кодовой странице 1252) могут классифицировать дополнительные однобайтовые символы как цифры.

Как и все остальные функции из <cctype> , поведение std::isxdigit не определено, если значение аргумента не представимо как unsigned char и не равно EOF . Для безопасного использования этих функций с обычными char (или signed char ) аргумент должен быть сначала преобразован в unsigned char :

bool my_isxdigit(char ch)
{
    return std::isxdigit(static_cast<unsigned char>(ch));
}

Аналогично, их не следует напрямую использовать со стандартными алгоритмами, когда типом значения итератора является char или signed char . Вместо этого сначала преобразуйте значение в unsigned char :

int count_xdigits(const std::string& s)
{
    return std::count_if(s.begin(), s.end(),
                      // static_cast<int(*)(int)>(std::isxdigit)         // неверно
                      // [](int c){ return std::isxdigit(c); }           // неверно
                      // [](char c){ return std::isxdigit(c); }          // неверно
                         [](unsigned char c){ return std::isxdigit(c); } // правильно
                        );
}

Пример

#include <cctype>
#include <climits>
#include <iostream>
int main()
{
    for (int c = 0; UCHAR_MAX >= c; ++c)
        if (isxdigit(c))
            std::cout << static_cast<char>(c);
    std::cout << '\n';
}

Вывод:

0123456789ABCDEFabcdef

Смотрите также

проверяет, классифицируется ли символ как шестнадцатеричная цифра в локали
(шаблон функции)
проверяет, является ли широкий символ шестнадцатеричным символом
(функция)
**Примечание:** В данном HTML-фрагменте нет текста для перевода, требующего локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (не подлежат переводу) - Кодовых последовательностей в тегах ` ` (не подлежат переводу) - Числовых значений и специальных символов - Символа "–" (тире), который является стандартным разделителем диапазонов Если бы присутствовал пояснительный текст вне тегов ` `, он был бы переведен на русский язык с сохранением профессионального стиля. **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода - все содержимое состоит из HTML-тегов, атрибутов, числовых значений и C++ специфических обозначений внутри тегов ` `, которые согласно инструкциям не подлежат переводу. **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода - все содержимое состоит из: - HTML тегов и атрибутов (не подлежат переводу) - Кода внутри тегов ` ` (не подлежит переводу) - Числовых значений и специальных символов - Символа "–" (диапазон), который является стандартным математическим символом Фрагмент представляет собой строку таблицы с техническими данными, не требующими перевода. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые значения (65–70) не требуют перевода - Содержимое внутри тегов ` ` сохраняется без изменений - Символы "–" являются разделителями, а не текстом для перевода - Все остальные элементы представляют собой HTML-разметку и числовые значения в таблице **Примечание:** В данном HTML-фрагменте не содержится текста для перевода, требующего локализации на русский язык. Все элементы представлены: - Числовыми диапазонами (71–90) - Шестнадцатеричными (\x47–\x5A) и восьмеричными (\107–\132) кодами - Буквенными последовательностями (GHIJKLMNOP, QRSTUVWXYZ) - Математическими обозначениями (0, ≠0) Все эти элементы сохраняются в оригинальном виде согласно требованиям перевода. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые значения (91–96) не требуют перевода - Все остальные элементы находятся внутри тегов ` `, которые согласно инструкции не должны переводиться - Символы `–` являются разделителями диапазонов и также не требуют перевода - Специальные обозначения `≠0` являются математическими символами и сохраняются без изменений **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода на русский язык. Все содержимое состоит из: - HTML тегов и атрибутов (не подлежат переводу) - Кодовых последовательностей в тегах ` ` (не подлежат переводу) - Числовых значений и символов - Специальных математических символов (≠) Если бы в тексте присутствовали обычные английские слова вне тегов ` `, они были бы переведены на русский язык с сохранением всех требований к форматированию. **Примечание:** В данном HTML-фрагменте не содержится текста для перевода на русский язык. Все элементы представлены: - Числовыми значениями (103–122) - C++ escape-последовательностями (\x67, \x7A, \147, \172) - Буквенными символами внутри тегов - Символами неравенства (≠0) - Цифровыми значениями (0) Все эти элементы согласно инструкциям не подлежат переводу. **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода - все содержимое состоит из числовых значений, шестнадцатеричных кодов, символов и HTML-разметки, которые согласно инструкциям не подлежат переводу.
Значения ASCII символы

iscntrl
iswcntrl

isprint
iswprint

isspace
iswspace

isblank
iswblank

isgraph
iswgraph

ispunct
iswpunct

isalnum
iswalnum

isalpha
iswalpha

isupper
iswupper

islower
iswlower

isdigit
iswdigit

isxdigit
iswxdigit

десятичное шестнадцатеричное восьмеричное
0–8 \x0 \x8 \0 \10 управляющие коды ( NUL и др.) ≠0 0 0 0 0 0 0 0 0 0 0 0
9 \x9 \11 табуляция ( \t ) ≠0 0 ≠0 ≠0 0 0 0 0 0 0 0 0
10–13 \xA \xD \12 \15 пробельные символы ( \n , \v , \f , \r ) ≠0 0 ≠0 0 0 0 0 0 0 0 0 0
14–31 \xE \x1F \16 \37 управляющие коды ≠0 0 0 0 0 0 0 0 0 0 0 0
32 \x20 \40 пробел 0 ≠0 ≠0 ≠0 0 0 0 0 0 0 0 0
33–47 \x21 \x2F \41 \57 !"#$%&'()*+,-./ 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
48–57 \x30 \x39 \60 \71 0123456789 0 ≠0 0 0 ≠0 0 ≠0 0 0 0 ≠0 ≠0
58–64 \x3A \x40 \72 \100 :;<=>?@ 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
65–70 \x41 \x46 \101 \106 ABCDEF 0 ≠0 0 0 ≠0 0 ≠0 ≠0 ≠0 0 0 ≠0
71–90 \x47 \x5A \107 \132 GHIJKLMNOP
QRSTUVWXYZ
0 ≠0 0 0 ≠0 0 ≠0 ≠0 ≠0 0 0 0
91–96 \x5B \x60 \133 \140 [\]^_` 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
97–102 \x61 \x66 \141 \146 abcdef 0 ≠0 0 0 ≠0 0 ≠0 ≠0 0 ≠0 0 ≠0
103–122 \x67 \x7A \147 \172 ghijklmnop
qrstuvwxyz
0 ≠0 0 0 ≠0 0 ≠0 ≠0 0 ≠0 0 0
123–126 \x7B \x7E \172 \176 {|}~ 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
127 \x7F \177 символ удаления ( DEL ) ≠0 0 0 0 0 0 0 0 0 0 0 0