Spec-Zone.ru › C++

std::isalpha

Определено в заголовочном файле <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)         // wrong
                      // [](int c){ return std::isalpha(c); }           // wrong
                      // [](char c){ return std::isalpha(c); }          // wrong
                         [](unsigned char c){ return std::isalpha(c); } // correct
                        );
}

Пример

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

#include <cctype>
#include <clocale>
#include <iostream>
 
int main()
{
    unsigned char c = '\xdf'; // German letter ß in ISO-8859-1
 
    std::cout << "isalpha(\'\\xdf\', default C locale) returned "
              << std::boolalpha << !!std::isalpha(c) << '\n';
 
    std::setlocale(LC_ALL, "de_DE.iso88591");
    std::cout << "isalpha(\'\\xdf\', ISO-8859-1 locale) returned "
              << static_cast<bool>(std::isalpha(c)) << '\n';
 
}

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

isalpha('\xdf', default C locale) returned false
isalpha('\xdf', ISO-8859-1 locale) returned true

См. также

isalpha(std::locale)
проверяет, является ли символ буквенным в соответствии с локализованным набором
(шаблон функции)
iswalpha
проверяет, является ли символ широкого типа буквенным
(функция)
C документация для isalpha
ASCII values characters

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 backspace character (DEL) ≠0 0 0 0 0 0 0 0 0 0 0 0

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/byte/isalpha

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API