Проверка типа содержимого символа

Для проверки типа содержимого символа предназначены следующие функции:

  • isdigit() и _isdigit_l() — возвращают ненулевое значение, если символ является десятичной цифрой, в противном случае — 0. Прототипы функций:
#include <cctype> /* или #include <ctype.h> */
int isdigit(int ch);
int _isdigit_l(int ch, _locale_t locale);

Для русских букв необходимо настроить локаль или указать ее в параметре locale. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
std::cout << std::isdigit('w') << std::endl; // 0
std::cout << std::isdigit('2') << std::endl; // 1
std::cout << std::isdigit((unsigned char)'б')
          << std::endl; // 0
  • isxdigit() и _isxdigit_l() — возвращают ненулевое значение, если символ является шестнадцатеричной цифрой (число от 0 до 9 или буква от A до F; регистр не имеет значения), в противном случае — 0. Прототипы функций:
#include <cctype> /* или #include <ctype.h> */
int isxdigit(int ch);
int _isxdigit_l(int ch, _locale_t locale);

Для русских букв необходимо настроить локаль или указать ее в параметре locale. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
std::cout << std::isxdigit('8') << std::endl; // 128
std::cout << std::isxdigit('a') << std::endl; // 128
std::cout << std::isxdigit('F') << std::endl; // 128
std::cout << std::isxdigit('g') << std::endl; // 0
  • isalpha() и _isalpha_l() — возвращают ненулевое значение, если символ является буквой, в противном случае — 0. Прототипы функций:
#include <cctype> /* или #include <ctype.h> */
int isalpha(int ch);
int _isalpha_l(int ch, _locale_t locale);

Для русских букв необходимо настроить локаль или указать ее в параметре locale. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
std::cout << std::isalpha('w') << std::endl; // 258
std::cout << std::isalpha('2') << std::endl; // 0
std::cout << std::isalpha((unsigned char)'б')
          << std::endl; // 258
std::cout << std::isalpha((unsigned char)'Б')
          << std::endl; // 257
  • isspace() и _isspace_l() — возвращают ненулевое значение, если символ является пробельным символом (пробелом, табуляцией, переводом строки или возвратом каретки), в противном случае — 0. Прототипы функций:
#include <cctype> /* или #include <ctype.h> */
int isspace(int ch);
int _isspace_l(int ch, _locale_t locale);

Для русских букв необходимо настроить локаль или указать ее в параметре locale. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
std::cout << std::isspace('w') << std::endl;  // 0
std::cout << std::isspace('\n') << std::endl; // 8
std::cout << std::isspace('\t') << std::endl; // 8
std::cout << std::isspace((unsigned char)'б')
          << std::endl; // 0
  • isalnum() и _isalnum_l() — возвращают ненулевое значение, если символ является буквой или цифрой, в противном случае — 0. Прототипы функций:
#include <cctype> /* или #include <ctype.h> */
int isalnum(int ch);
int _isalnum_l(int ch, _locale_t locale);

Для русских букв необходимо настроить локаль или указать ее в параметре locale. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
std::cout << std::isalnum('w') << std::endl;  // 258
std::cout << std::isalnum('8') << std::endl;  // 4
std::cout << std::isalnum('\t') << std::endl; // 0
std::cout << std::isalnum((unsigned char)'б')
          << std::endl; // 258
  • islower() и _islower_l() — возвращают ненулевое значение, если символ является буквой в нижнем регистре, в противном случае — 0. Прототипы функций:
#include <cctype> /* или #include <ctype.h> */
int islower(int ch);
int _islower_l(int ch, _locale_t locale);

Для русских букв необходимо настроить локаль или указать ее в параметре locale. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
std::cout << std::islower('w') << std::endl;  // 2
std::cout << std::islower('8') << std::endl;  // 0
std::cout << std::islower('\t') << std::endl; // 0
std::cout << std::islower((unsigned char)'б')
          << std::endl; // 2
std::cout << std::islower((unsigned char)'Б')
          << std::endl; // 0
  • isupper() и _isupper_l() — возвращают ненулевое значение, если символ является буквой в верхнем регистре, в противном случае — 0. Прототипы функций:
#include <cctype> /* или #include <ctype.h> */
int isupper(int ch);
int _isupper_l(int ch, _locale_t locale);

Для русских букв необходимо настроить локаль или указать ее в параметре locale. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
std::cout << std::isupper('W') << std::endl;  // 1
std::cout << std::isupper('8') << std::endl;  // 0
std::cout << std::isupper('\t') << std::endl; // 0
std::cout << std::isupper((unsigned char)'б')
          << std::endl; // 0
std::cout << std::isupper((unsigned char)'Б')
          << std::endl; // 1
  • ispunct() и _ispunct_l() — возвращают ненулевое значение, если символ является символом пунктуации, в противном случае — 0. Прототипы функций:
#include <cctype> /* или #include <ctype.h> */
int ispunct(int ch);
int _ispunct_l(int ch, _locale_t locale);

Для русских букв необходимо настроить локаль или указать ее в параметре locale. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
std::cout << std::ispunct('8') << std::endl; // 0
std::cout << std::ispunct('f') << std::endl; // 0
std::cout << std::ispunct(',') << std::endl; // 16
std::cout << std::ispunct('.') << std::endl; // 16
std::cout << std::ispunct(' ') << std::endl; // 0
  • isprint() и _isprint_l() — возвращают ненулевое значение, если символ является печатаемым (включая пробел), в противном случае — 0. Прототипы функций:
#include <cctype> /* или #include <ctype.h> */
int isprint(int ch);
int _isprint_l(int ch, _locale_t locale);

Для русских букв необходимо настроить локаль или указать ее в параметре locale. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
std::cout << std::isprint('8') << std::endl;   // 4
std::cout << std::isprint('\x5') << std::endl; // 0
std::cout << std::isprint(' ') << std::endl;   // 64
std::cout << std::isprint((unsigned char)'б')
          << std::endl; // 258
  • isgraph() и _isgraph_l() — возвращают ненулевое значение, если символ является печатаемым (пробел печатаемым не считается), в противном случае — 0. Прототипы функций:
#include <cctype> /* или #include <ctype.h> */
int isgraph(int ch);
int _isgraph_l(int ch, _locale_t locale);

Для русских букв необходимо настроить локаль или указать ее в параметре locale. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
std::cout << std::isgraph('8') << std::endl;   // 4
std::cout << std::isgraph('\x5') << std::endl; // 0
std::cout << std::isgraph(' ') << std::endl;   // 0
std::cout << std::isgraph((unsigned char)'б')
          << std::endl; // 258
  • iscntrl() и _iscntrl_l() — возвращают ненулевое значение, если символ является непечатаемым, в противном случае — 0. Прототипы функций:
#include <cctype> /* или #include <ctype.h> */
int iscntrl(int ch);
int _iscntrl_l(int ch, _locale_t locale);

Для русских букв необходимо настроить локаль или указать ее в параметре locale. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
std::cout << std::iscntrl('8') << std::endl;   // 0
std::cout << std::iscntrl('\x5') << std::endl; // 32
std::cout << std::iscntrl(' ') << std::endl;   // 0
  • isblank() — возвращает ненулевое значение, если символ является пробельным (пробел, горизонтальная табуляция и др.), в противном случае — 0. Прототип функции:
#include <cctype> /* или #include <ctype.h> */
int isblank(int ch);

Для русских букв необходимо настроить локаль. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
std::cout << std::isblank('8') << std::endl;   // 0
std::cout << std::isblank('\t') << std::endl;  // 1
std::cout << std::isblank(' ') << std::endl;   // 1

Обратите внимание на то, что перед русскими буквами указывается операция приведения к типу unsigned char. Если приведение типов не указать, то производится попытка преобразования к типу unsigned int. Так как коды русских букв по умолчанию имеют отрицательные значения, знаковый бит станет причиной большого значения, которое выходит за рамки диапазона значений для типа char. Например, для буквы «б» значение будет равно 4294967265. Пример:

std::cout << (unsigned int)(unsigned char)'б'
          << std::endl;                        // 225
std::cout << (unsigned int)'б' 
          << std::endl;                        // 4294967265

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов