名稱空間
變體
操作

std::isalpha

來自 cppreference.com
< cpp‎ | string‎ | byte
在標頭檔案 <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> 中的所有其他函式一樣,如果引數值既不能表示為 unsigned char,也不等於 EOF,則 std::isalpha 的行為是未定義的。為了安全地將這些函式與普通的 char(或 signed char)一起使用,應首先將引數轉換為 unsigned char

bool my_isalpha(char ch)
{
    return std::isalpha(static_cast<unsigned char>(ch));
}

同樣,當迭代器的值型別是 charsigned 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 在不同語言環境(OS-specific)中的使用。

#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

[編輯] 另請參閱

檢查字元是否被區域設定分類為字母
(函式模板) [編輯]
檢查寬字元是否為字母
(函式) [編輯]
C 文件 for isalpha
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