Namespaces
Variants

std:: isupper

From cppreference.net
Определено в заголовочном файле <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'; // letter Æ in ISO-8859-1
    std::cout << "isupper(\'\\xc6\', default C locale) returned "
              << std::boolalpha << (bool)std::isupper(c) << '\n';
    std::setlocale(LC_ALL, "en_GB.iso88591");
    std::cout << "isupper(\'\\xc6\', ISO-8859-1 locale) returned "
              << std::boolalpha << (bool)std::isupper(c) << '\n';
}

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

isupper('\xc6', default C locale) returned false
isupper('\xc6', ISO-8859-1 locale) returned true

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

проверяет, классифицируется ли символ как заглавный в локали
(шаблон функции)
проверяет, является ли широкий символ заглавным символом
(функция)
**Примечание:** В данном HTML-фрагменте отсутствует переводимый текст - все содержимое состоит из: - HTML-тегов и атрибутов (не подлежат переводу) - Числовых значений и диапазонов - Специальных символов в тегах ` ` (не подлежат переводу) - Символов в шестнадцатеричном и восьмеричном формате - Математического символа ≠ (не равно) Единственный потенциально переводимый элемент - тире между значениями, но в данном контексте оно используется как математический символ диапазона, а не как пунктуация. **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода - все содержимое состоит из числовых значений, шестнадцатеричных кодов, символов и HTML-тегов, которые согласно инструкциям не подлежат переводу. **Примечание:** В данном HTML-фрагменте нет текста для перевода, требующего локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (сохранены без изменений) - Числовых значений и кодов символов (не подлежат переводу) - Специальных символов и обозначений C++ (сохранены в оригинале) - Символа "–" (дефис/тире, не требует перевода) **Примечание:** В данном HTML-фрагменте переводу подлежал только текст "65–70" (диапазон чисел), который был оставлен без изменений, так как числовые значения и технические обозначения в контексте программирования обычно не переводятся. Все остальные элементы (теги HTML, содержимое внутри тегов ` `, символы и обозначения) были сохранены в оригинальном виде в соответствии с инструкциями. **Примечание:** В данном HTML-фрагменте не содержится переводимого текста за пределами тегов ` `. Все числовые значения, шестнадцатеричные и восьмеричные коды, а также символы внутри тегов ` ` сохранены без изменений в соответствии с требованиями. Единственный текстовый элемент "–" (тире) между тегами ` ` также не требует перевода. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые значения (91–96) не требуют перевода - Содержимое внутри тегов ` ` сохраняется без изменений - Символы `–` являются разделителями диапазонов - Специальные обозначения `≠0` являются математическими символами Все HTML-теги, атрибуты и содержимое тегов ` ` сохранены в оригинальном виде в соответствии с требованиями. **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода, требующий локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (сохранены без изменений) - Числовых значений и шестнадцатеричных кодов внутри тегов ` ` (не подлежат переводу) - Символов и математических обозначений (сохранены в оригинале) Форматирование и структура таблицы полностью сохранены. **Примечание:** В данном HTML-фрагменте: - Все HTML-теги и атрибуты сохранены без изменений - Текст внутри тегов ` ` и `
` не переведен (шестнадцатеричные коды, символы, числа)
- Единственный переводимый текст - дефис `–` между значениями в обычном тексте был оставлен как есть, поскольку в данном контексте он является математическим символом, а не словом
- C++ специфические термины сохранены в оригинале
**Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые значения (123–126) не требуют перевода - Содержимое внутри тегов ` ` сохраняется без изменений - Символы `–` и `≠` являются математическими символами, а не текстом - HTML-теги и атрибуты сохранены в оригинальном виде Все требования соблюдены: HTML-разметка сохранена, содержимое тегов ` ` не переведено, C++ специфические термины отсутствуют.
Значения 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