std::isupper
出自cppreference.com
| 在標頭 <cctype> 定義
|
||
| |
||
檢查給定的字符是否被當前安裝的 C 本地環境分類為大寫字符。默認 "C" 本地環境中,std::isupper 僅對大寫字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ)返回非零值。
若 isupper 返回非零值,則保證同一 C 本地環境中 iscntrl、isdigit、ispunct 和 isspace 對同一字符返回零。
若 ch 的值不能表示為 unsigned char 且不等於 EOF 則行為未定義。
參數
| ch | - | 要分類的字符 |
返回值
若字符為大寫字母則為非零值,否則為零。
註解
同所有其他來自 <cctype> 的函數,若實參值既不能表示為 unsigned char 又不等於 EOF 則 std::isupper 的行為未定義。為了以單純的 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
參閱
| 檢查字符是否被本地環境分類為大寫 (函數模板) | |
| 檢查寬字符是否為大寫 (函數) | |
isupper 的 C 文檔
| |
| ASCII 值 | 字符 | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 十進制 | 十六進制 | 八進制 | |||||||||||||
| 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
|
space | 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
|
GHIJKLMNOPQRSTUVWXYZ
|
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
|
ghijklmnopqrstuvwxyz
|
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
|