名前空間
変種
操作

std::isalpha

From 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と等しくない場合は、動作は未定義です。

目次

[編集] パラメータ

文字 - 分類する文字

[編集] 戻り値

文字がアルファベット文字の場合はゼロ以外の値、それ以外の場合はゼロ。

[編集] 注記

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

[編集]

異なるロケールでのstd::isalphaの使用方法を示します(OS依存)。

#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ドキュメント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

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
English 日本語 中文(简体) 中文(繁體)