名前空間
変種
操作

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));
}

同様に、イテレータの値型が char または signed 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
                        );
}

[編集]

異なるロケールで isalpha() の使用をデモンストレーションします (OS固有)。

#include <iostream>
#include <cctype> 
#include <clocale>
 
int main()
{        
    unsigned char c = '\xdf'; // German letter ß in ISO-8859-1
 
    std::cout << "isalpha(\'\\xdf\', default C locale) returned "
               << std::boolalpha << (bool)std::isalpha(c) << '\n';
 
    std::setlocale(LC_ALL, "de_DE.iso88591");
    std::cout << "isalpha(\'\\xdf\', ISO-8859-1 locale) returned "
              << std::boolalpha << (bool)std::isalpha(c) << '\n';
 
}

出力:

isalpha('\xdf', default C locale) returned false
isalpha('\xdf', ISO-8859-1 locale) returned true


[編集] 関連項目

指定されたロケールにおいて文字がアルファベットに分類されるかどうか調べます
(関数テンプレート) [edit]
ワイド文字がアルファベットかどうか調べます
(関数) [edit]
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

10進 16進 8進
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