is、isw 系ルーチン
解説
これらのルーチンは、文字が指定条件を満たしているかどうかを調べます。
is 系ルーチンは、–1 (EOF) ~ UCHAR_MAX (0xFF) の整数の引数に対して、意味のある結果を生成します。 引数は、int 型にする必要があります。
ヒント
is 系ルーチンで char 型の引数を渡すと、不測の結果が発生する可能性があります。 シングルバイト文字セット (SBCS: single-byte character set) またはマルチバイト文字セット (MBCS: Multibyte Character Set) の char 型の 1 バイト (シングルバイト) 文字は、0x7F より大きいと負になります。 char が渡されると、コンパイラはその値を int または符号付き long に変換します。 この値は、コンパイラによって符号拡張されることがあり、予想外の結果になることがあります。
isw 系ルーチンは、-1 (WEOF) ~ 0xFFFF の整数値に対し、意味のある結果を生成します。 wint_t データ型は WCHAR.H に unsigned short として定義されており、任意のワイド文字またはワイド文字のファイル終端値 (WEOF) を保持できます。
出力値は、ロケールの LC_CTYPE カテゴリの設定で決まります。詳細については、「setlocale」を参照してください。 これらの関数のうち _l サフィックスが付いていないバージョンでは、現在のロケールを使用してロケール依存の動作を行います。_l サフィックスが付いているバージョンは、渡されたロケール パラメーターを代わりに使用する点を除いて同じです。
"C" ロケールでの is 系ルーチンのテスト条件は次のとおりです。
isalnum
英数字 (A ~ Z、a ~ z、または 0 ~ 9)。isalpha
英字 (A ~ Z または a ~ z)。__isascii
ASCII 文字 (0x00 ~ 0x7F)。iscntrl
制御文字 (0x00 ~ 0x1F または 0x7F)。__iscsym
英字、アンダースコア (_)、または数字。__iscsymf
英字またはアンダースコア (_)。isdigit
10 進数 (0 ~ 9)。isgraph
空白 ( ) を除く印字可能な文字。islower
英小文字 (a ~ z)。isprint
空白を含む印字可能な文字 (0x20 ~ 0x7E)。ispunct
区切り記号。isspace
空白文字 (0x09 ~ 0x0D または 0x20)。isupper
英大文字 (A ~ Z)。isxdigit
16 進数 (A ~ F、a ~ f、または 0 ~ 9)。
各 isw ルーチンでは、指定条件に基づくテストの結果はロケールとは無関係です。 isw 関数のテスト条件は次のとおりです。
iswalnum
iswalpha または iswdigit。iswalpha
iswcntrl、iswdigit、iswpunct、または iswspace の値がいずれも 0 になる実装定義のワイド文字セットの文字。 iswalpha は、指定されたワイド文字が iswupper または iswlower で 0 以外になる場合だけ、0 以外の値を返します。iswascii
ASCII 文字のワイド文字表現 (0x0000 ~ 0x007F)。iswcntrl
制御ワイド文字。__iswcsym
isalnum が true のワイド文字または '_' 文字。__iswcsymf
iswalpha が true のワイド文字または '_' 文字。iswctype
文字は、引数 desc で指定されたプロパティを持ちます。 iswctype の引数 desc の有効な値には、次の表に示すように、それぞれ対応するワイド文字分類ルーチンがあります。iswctype( c, desc ) と同等のその他の isw 系テスト ルーチン
引数 desc の値
iswctype( c, desc ) に対応するルーチン
_ALPHA
iswalpha( c )
_ALPHA | _DIGIT
iswalnum( c )
_CONTROL
iswcntrl( c )
_DIGIT
iswdigit( c )
_ALPHA | _DIGIT | _PUNCT
iswgraph( c )
_LOWER
iswlower( c )
_ALPHA | _BLANK | _DIGIT | _PUNCT
iswprint( c )
_PUNCT
iswpunct( c )
_SPACE
iswspace( c )
_UPPER
iswupper( c )
_HEX
iswxdigit( c )
iswdigit
10 進数字に対応するワイド文字。iswgraph
空白ワイド文字 (L' ') を除く印字可能なワイド文字。iswlower
英小文字、または iswcntrl、iswdigit、iswpunct、または iswspace の値がいずれも 0 になる実装定義のワイド文字セットの文字。 iswlower は、英小文字に対応するワイド文字の場合だけ、0 以外の値を返します。iswprint
空白ワイド文字 (L' ') を含む印字可能なワイド文字。iswpunct
空白ワイド文字 (L' ') でもなく、iswalnum が 0 以外になるワイド文字でもない印字可能なワイド文字。iswspace
標準の空白文字に対応するワイド文字か、iswalnum が偽になる実装定義ワイド文字セットの文字。 標準の空白文字です。容量 (L' ')、formfeed (L '\f')、改行 (L '\n')、キャリッジ リターン (L '\r')、水平タブ (L '\t')、垂直タブ (L '\v')。iswupper
英大文字のワイド文字、または iswcntrl、iswdigit、iswpunct、または iswspace のいずれも 0 になる実装定義ワイド文字セットのワイド文字。 iswupper は、英大文字に対応するワイド文字の場合だけ、0 以外の値を返します。iswxdigit
16 進数字に対応するワイド文字。
使用例
// crt_isfam.c
/* This program tests all characters between 0x0
* and 0x7F, then displays each character with abbreviations
* for the character-type codes that apply.
*/
#include <stdio.h>
#include <ctype.h>
int main( void )
{
int ch;
for( ch = 0; ch <= 0x7F; ch++ )
{
printf( "%.2x ", ch );
printf( " %c", isprint( ch ) ? ch : ' ' );
printf( "%4s", isalnum( ch ) ? "AN" : "" );
printf( "%3s", isalpha( ch ) ? "A" : "" );
printf( "%3s", __isascii( ch ) ? "AS" : "" );
printf( "%3s", iscntrl( ch ) ? "C" : "" );
printf( "%3s", __iscsym( ch ) ? "CS " : "" );
printf( "%3s", __iscsymf( ch ) ? "CSF" : "" );
printf( "%3s", isdigit( ch ) ? "D" : "" );
printf( "%3s", isgraph( ch ) ? "G" : "" );
printf( "%3s", islower( ch ) ? "L" : "" );
printf( "%3s", ispunct( ch ) ? "PU" : "" );
printf( "%3s", isspace( ch ) ? "S" : "" );
printf( "%3s", isprint( ch ) ? "PR" : "" );
printf( "%3s", isupper( ch ) ? "U" : "" );
printf( "%3s", isxdigit( ch ) ? "X" : "" );
printf( ".\n" );
}
}
出力
00 AS C .
01 AS C .
02 AS C .
03 AS C .
04 AS C .
05 AS C .
06 AS C .
07 AS C .
08 AS C .
09 AS C S .
0a AS C S .
0b AS C S .
0c AS C S .
0d AS C S .
0e AS C .
0f AS C .
10 AS C .
11 AS C .
12 AS C .
13 AS C .
14 AS C .
15 AS C .
16 AS C .
17 AS C .
18 AS C .
19 AS C .
1a AS C .
1b AS C .
1c AS C .
1d AS C .
1e AS C .
1f AS C .
20 AS S PR .
21 ! AS G PU PR .
22 " AS G PU PR .
23 # AS G PU PR .
24 $ AS G PU PR .
25 % AS G PU PR .
26 & AS G PU PR .
27 ' AS G PU PR .
28 ( AS G PU PR .
29 ) AS G PU PR .
2a * AS G PU PR .
2b + AS G PU PR .
2c , AS G PU PR .
2d - AS G PU PR .
2e . AS G PU PR .
2f / AS G PU PR .
30 0 AN AS CS D G PR X.
31 1 AN AS CS D G PR X.
32 2 AN AS CS D G PR X.
33 3 AN AS CS D G PR X.
34 4 AN AS CS D G PR X.
35 5 AN AS CS D G PR X.
36 6 AN AS CS D G PR X.
37 7 AN AS CS D G PR X.
38 8 AN AS CS D G PR X.
39 9 AN AS CS D G PR X.
3a : AS G PU PR .
3b ; AS G PU PR .
3c < AS G PU PR .
3d = AS G PU PR .
3e > AS G PU PR .
3f ? AS G PU PR .
40 @ AS G PU PR .
41 A AN A AS CS CSF G PR U X.
42 B AN A AS CS CSF G PR U X.
43 C AN A AS CS CSF G PR U X.
44 D AN A AS CS CSF G PR U X.
45 E AN A AS CS CSF G PR U X.
46 F AN A AS CS CSF G PR U X.
47 G AN A AS CS CSF G PR U .
48 H AN A AS CS CSF G PR U .
49 I AN A AS CS CSF G PR U .
4a J AN A AS CS CSF G PR U .
4b K AN A AS CS CSF G PR U .
4c L AN A AS CS CSF G PR U .
4d M AN A AS CS CSF G PR U .
4e N AN A AS CS CSF G PR U .
4f O AN A AS CS CSF G PR U .
50 P AN A AS CS CSF G PR U .
51 Q AN A AS CS CSF G PR U .
52 R AN A AS CS CSF G PR U .
53 S AN A AS CS CSF G PR U .
54 T AN A AS CS CSF G PR U .
55 U AN A AS CS CSF G PR U .
56 V AN A AS CS CSF G PR U .
57 W AN A AS CS CSF G PR U .
58 X AN A AS CS CSF G PR U .
59 Y AN A AS CS CSF G PR U .
5a Z AN A AS CS CSF G PR U .
5b [ AS G PU PR .
5c \ AS G PU PR .
5d ] AS G PU PR .
5e ^ AS G PU PR .
5f _ AS CS CSF G PU PR .
60 ` AS G PU PR .
61 a AN A AS CS CSF G L PR X.
62 b AN A AS CS CSF G L PR X.
63 c AN A AS CS CSF G L PR X.
64 d AN A AS CS CSF G L PR X.
65 e AN A AS CS CSF G L PR X.
66 f AN A AS CS CSF G L PR X.
67 g AN A AS CS CSF G L PR .
68 h AN A AS CS CSF G L PR .
69 i AN A AS CS CSF G L PR .
6a j AN A AS CS CSF G L PR .
6b k AN A AS CS CSF G L PR .
6c l AN A AS CS CSF G L PR .
6d m AN A AS CS CSF G L PR .
6e n AN A AS CS CSF G L PR .
6f o AN A AS CS CSF G L PR .
70 p AN A AS CS CSF G L PR .
71 q AN A AS CS CSF G L PR .
72 r AN A AS CS CSF G L PR .
73 s AN A AS CS CSF G L PR .
74 t AN A AS CS CSF G L PR .
75 u AN A AS CS CSF G L PR .
76 v AN A AS CS CSF G L PR .
77 w AN A AS CS CSF G L PR .
78 x AN A AS CS CSF G L PR .
79 y AN A AS CS CSF G L PR .
7a z AN A AS CS CSF G L PR .
7b { AS G PU PR .
7c | AS G PU PR .
7d } AS G PU PR .
7e ~ AS G PU PR .
7f AS C .