◐ Shell
clean mode source ↗

std::isupper — cppreference.com

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

<tbody> </tbody>

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

int isupper( int ch );

Проверяет, является ли данный символ символом верхнего регистра согласно классификации установленной в данный момент локали C. В локали по умолчанию "C" std::isupper возвращает ненулевое значение только для букв верхнего регистра (ABCDEFGHIJKLMNOPQRSTUVWXYZ).

Если std::isupper возвращает ненулевое значение, гарантировано, что std::iscntrl, std::isdigit, std::ispunct и std::isspace возвращают ноль для того же символа в той же локали C.

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

Параметры

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

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

Ненулевое значение, если символ представляет собой букву верхнего регистра, иначе ноль.

Примечание

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

bool my_isupper(char ch)
{
    return std::isupper(static_cast<unsigned char>(ch));
}

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

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

Пример

#include <cctype>
#include <clocale>
#include <iostream>
 
int main()
{
    unsigned char c = '\xc6'; // буква Æ в ISO-8859-1
 
    std::cout << "isupper(\'\\xc6\', локаль C по умолчанию) возвращает "
              << std::boolalpha << (bool)std::isupper(c) << '\n';
 
    std::setlocale(LC_ALL, "en_GB.iso88591");
    std::cout << "isupper(\'\\xc6\', локаль ISO-8859-1) возвращает "
              << std::boolalpha << (bool)std::isupper(c) << '\n';

}

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

isupper('\xc6', локаль C по умолчанию) возвращает false
isupper('\xc6', локаль 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