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

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

  • iswdigit() — возвращает ненулевое значение, если символ является десятичной цифрой, в противном случае — 0. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
int iswdigit(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << std::iswdigit(L'w') << std::endl; // 0
std::wcout << std::iswdigit(L'2') << std::endl; // 4
std::wcout << std::iswdigit(L'б') << std::endl; // 0
  • iswxdigit() — возвращает ненулевое значение, если символ является шестнадцатеричной цифрой (число от 0 до 9 или буква от A до F; регистр не имеет значения), в противном случае — 0. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
int iswxdigit(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << std::iswxdigit(L'8') << std::endl; // 128
std::wcout << std::iswxdigit(L'a') << std::endl; // 128
std::wcout << std::iswxdigit(L'F') << std::endl; // 128
std::wcout << std::iswxdigit(L'g') << std::endl; // 0
  • iswalpha() — возвращает ненулевое значение, если символ является буквой, в противном случае — 0. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
int iswalpha(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << std::iswalpha(L'w') << std::endl; // 258
std::wcout << std::iswalpha(L'2') << std::endl; // 0
std::wcout << std::iswalpha(L'б') << std::endl; // 258
std::wcout << std::iswalpha(L'Б') << std::endl; // 257
  • iswspace() — возвращает ненулевое значение, если символ является пробельным символом (пробелом, табуляцией, переводом строки или возвратом каретки), в противном случае — 0. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
int iswspace(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << std::iswspace(L'w') << std::endl;  // 0
std::wcout << std::iswspace(L'\n') << std::endl; // 8
std::wcout << std::iswspace(L'\t') << std::endl; // 8
std::wcout << std::iswspace(L'б') << std::endl;  // 0
  • iswalnum() — возвращает ненулевое значение, если символ является буквой или цифрой, в противном случае — 0. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
int iswalnum(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << std::iswalnum(L'w') << std::endl;  // 258
std::wcout << std::iswalnum(L'8') << std::endl;  // 4
std::wcout << std::iswalnum(L'\t') << std::endl; // 0
std::wcout << std::iswalnum(L'б') << std::endl;  // 258
  • iswlower() — возвращает ненулевое значение, если символ является буквой в нижнем регистре, в противном случае — 0. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
int iswlower(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << std::iswlower(L'w') << std::endl;  // 2
std::wcout << std::iswlower(L'8') << std::endl;  // 0
std::wcout << std::iswlower(L'\t') << std::endl; // 0
std::wcout << std::iswlower(L'б') << std::endl;  // 2
std::wcout << std::iswlower(L'Б') << std::endl;  // 0
  • iswupper() — возвращает ненулевое значение, если символ является буквой в верхнем регистре, в противном случае — 0. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
int iswupper(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << std::iswupper(L'W') << std::endl;  // 1
std::wcout << std::iswupper(L'8') << std::endl;  // 0
std::wcout << std::iswupper(L'\t') << std::endl; // 0
std::wcout << std::iswupper(L'б') << std::endl;  // 0
std::wcout << std::iswupper(L'Б') << std::endl;  // 1
  • iswpunct() — возвращает ненулевое значение, если символ является символом пунктуации, в противном случае — 0. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
int iswpunct(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << std::iswpunct(L'8') << std::endl; // 0
std::wcout << std::iswpunct(L'f') << std::endl; // 0
std::wcout << std::iswpunct(L',') << std::endl; // 16
std::wcout << std::iswpunct(L'.') << std::endl; // 16
std::wcout << std::iswpunct(L' ') << std::endl; // 0
  • iswprint() — возвращает ненулевое значение, если символ является печатаемым (включая пробел), в противном случае — 0. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
int iswprint(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << std::iswprint(L'8') << std::endl;   // 4
std::wcout << std::iswprint(L'\x5') << std::endl; // 0
std::wcout << std::iswprint(L' ') << std::endl;   // 64
std::wcout << std::iswprint(L'б') << std::endl;   // 258
  • iswgraph() — возвращает ненулевое значение, если символ является печатаемым (пробел печатаемым не считается), в противном случае — 0. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
int iswgraph(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << std::iswgraph(L'8') << std::endl;   // 4
std::wcout << std::iswgraph(L'\x5') << std::endl; // 0
std::wcout << std::iswgraph(L' ') << std::endl;   // 0
std::wcout << std::iswgraph(L'б') << std::endl;   // 258
  • iswcntrl() — возвращает ненулевое значение, если символ является непечатаемым, в противном случае — 0. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
int iswcntrl(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << std::iswcntrl(L'8') << std::endl;   // 0
std::wcout << std::iswcntrl(L'\x5') << std::endl; // 32
std::wcout << std::iswcntrl(L' ') << std::endl;   // 0
  • iswblank() — возвращает ненулевое значение, если символ является пробельным (пробел, горизонтальная табуляция и др.), в противном случае — 0. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
int iswblank(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << std::iswblank(L'8') << std::endl;  // 0
std::wcout << std::iswblank(L'\t') << std::endl; // 1
std::wcout << std::iswblank(L' ') << std::endl;  // 1

В качестве примера проверим регистр символа и выведем соответствующее сообщение, а затем преобразуем символ к верхнему регистру и выведем его в окно консоли (листинг 8.1).

Листинг 8.1. Пример работы с расширенными символами

#include <iostream>
#include <clocale>
#include <cwchar>

int main() {
   _wsetlocale(LC_ALL, L"Russian_Russia.1251");
   wchar_t ch = L'п';
   if (std::iswlower(ch)) {
      std::wcout << L"Строчная" << std::endl;
   }
   else {
      std::wcout << L"Прописная" << std::endl;
   }                              // Результат: Строчная
   ch = std::towupper(ch);
   std::wcout << ch << std::endl; // П
   return 0;
}

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

Помощь сайту

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

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