◐ Shell
clean mode source ↗

std::isalpha — cppreference.com

Материал из cppreference.com

<tbody> </tbody>

Определено в заголовочном файле <cctype>

int isalpha( int ch );

Проверяет, является ли данный символ буквенным символом согласно классификации установленной в данный момент локали C. В локали по умолчанию следующие символы являются буквенными:

  • заглавные буквы ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • строчные буквы abcdefghijklmnopqrstuvwxyz

В локалях, отличных от "C", буквенным символом является символ, для которого std::isupper() или std::islower() возвращают не ноль или любой другой символ, который в данной локали считается буквенным. В любом случае, std::iscntrl(), std::isdigit(), std::ispunct() и std::isspace() вернут ноль для этого символа.

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

Параметры

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

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

Ненулевое значение, если символ является буквенным, иначе ноль.

Примечание

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

bool my_isalpha(char ch)
{
    return std::isalpha(static_cast<unsigned char>(ch));
}

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

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

Пример

Демонстрирует использование std::isalpha с различными локалями (зависит от ОС).

#include <cctype>
#include <clocale>
#include <iostream>
         
int main()
{
    unsigned char c = '\xdf'; // Немецкая буква ß в ISO-8859-1
 
    std::cout << "isalpha(\'\\xdf\', локаль C по умолчанию) возвращает "
              << std::boolalpha << !!std::isalpha(c) << '\n';

    std::setlocale(LC_ALL, "de_DE.iso88591");
    std::cout << "isalpha(\'\\xdf\', локаль ISO-8859-1) возвращает "
              << static_cast<bool>(std::isalpha(c)) << '\n';
    
}

Возможный вывод:

isalpha('\xdf', локаль C по умолчанию) возвращает false
isalpha('\xdf', локаль ISO-8859-1) возвращает true

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

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