名前空間
変種
操作

std::isxdigit

From cppreference.com
< cpp‎ | string‎ | byte
 
 
 
 
ヘッダー <cctype> で定義
int isxdigit( int ch );

与えられた文字が16進数の数字文字(0123456789ABCDEFabcdef)であるかどうかをチェックします。

chの値がunsigned charとして表現できないか、またはEOFと等しくない場合、動作は未定義です。

目次

[編集] パラメータ

文字 - 分類する文字

[編集] 戻り値

文字が16進数の数字文字であればゼロ以外の値を返し、そうでなければゼロを返します。

[編集] 注記

std::isdigit および std::isxdigit は、現在インストールされているCロケールに影響されない、標準のナロー文字分類関数です。ただし、一部の実装(例:Microsoftの1252コードページ)では、追加のシングルバイト文字を数字として分類する場合があります。

<cctype> の他のすべての関数と同様に、引数の値が unsigned char で表現できる値でもなく、かつ EOF とも等しくない場合、std::isxdigit の動作は未定義です。プレーンな char(または signed char)でこれらの関数を安全に使用するには、引数をまず unsigned char に変換する必要があります。

bool my_isxdigit(char ch)
{
    return std::isxdigit(static_cast<unsigned char>(ch));
}

同様に、イテレータの値型がcharまたはsigned charである場合、標準アルゴリズムで直接使用しないでください。代わりに、まず値をunsigned charに変換してください。

int count_xdigits(const std::string& s)
{
    return std::count_if(s.begin(), s.end(),
                      // static_cast<int(*)(int)>(std::isxdigit)         // wrong
                      // [](int c){ return std::isxdigit(c); }           // wrong
                      // [](char c){ return std::isxdigit(c); }          // wrong
                         [](unsigned char c){ return std::isxdigit(c); } // correct
                        );
}

[編集]

#include <cctype>
#include <climits>
#include <iostream>
 
int main()
{
    for (int c = 0; UCHAR_MAX >= c; ++c)
        if (isxdigit(c))
            std::cout << static_cast<char>(c);
    std::cout << '\n';
}

出力

0123456789ABCDEFabcdef

[編集] 関連項目

ロケールによって文字が16進数に分類されるかチェックする
(関数テンプレート) [編集]
ワイド文字が16進文字であるかチェックする
(関数) [編集]
Cドキュメントisxdigit
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 日本語 中文(简体) 中文(繁體)