std::isupper
Определено в заголовочном файле <cctype> | ||
int isupper(int ch ); | ||
Проверяет, является ли данный символ символом верхнего регистра согласно классификации установленной в данный момент локали C. В локали по умолчанию "C"std::isupper
возвращает ненулевое значение только для букв верхнего регистра (ABCDEFGHIJKLMNOPQRSTUVWXYZ
).
Если std::isupper
возвращает ненулевое значение, гарантировано, что std::iscntrl, std::isdigit, std::ispunct и std::isspace возвращают ноль для того же символа в той же локали C.
Поведение не определено, если значение ch не может быть представлено как unsignedchar и не равно EOF.
Содержание |
[править]Параметры
ch | — | символ для классификации |
[править]Возвращаемое значение
Ненулевое значение, если символ представляет собой букву верхнего регистра, иначе ноль.
[править]Примечание
Как и все другие функции из <cctype>, поведение std::isupper
не определено, если значение аргумента не может быть представлено как unsignedchar и не равно EOF. Чтобы безопасно использовать эти функции с простыми char (или signedchar), аргумент сначала должен быть преобразован в unsignedchar:
bool my_isupper(char ch){return std::isupper(static_cast<unsignedchar>(ch));}
Также, их не следует использовать напрямую со стандартными алгоритмами, если тип значения итератора является char или signedchar. Вместо этого сначала преобразуйте значение в unsignedchar:
int count_uppers(conststd::string& s){returnstd::count_if(s.begin(), s.end(), // static_cast<int(*)(int)>(std::isupper) // неправильно// [](int c){ return std::isupper(c); } // неправильно// [](char c){ return std::isupper(c); } // неправильно[](unsignedchar c){return std::isupper(c);}// правильно);}
[править]Пример
#include <cctype>#include <clocale>#include <iostream> int main(){unsignedchar 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
[править]Смотрите также
проверяет, классифицируется ли символ локалью как в верхнем регистре (шаблон функции) | |
проверяет, является ли широкий символ символом в верхнем регистре (функция) | |
Документация C по isupper |
ASCII значения | символы | isupper | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
деся-тичные | шестнад-цатерич-ные | восьме-ричные | |||||||||||||
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 |