is、isw 系ルーチン

更新 : 2007 年 11 月

isalnum、iswalnum、_isalnum_l、_iswalnum_l

islower、iswlower、_islower_l、_iswlower_l

isalpha、iswalpha、_isalpha_l、_iswalpha_l

isprint、iswprint、_isprint_l、_iswprint_l

__isascii、iswascii

ispunct、iswpunct、_ispunct_l、_iswpunct_l

iscntrl、iswcntrl、_iscntrl_l、_iswcntrl_l

isspace、iswspace、_isspace_l、_iswspace_l

__iscsym、__iswcsym __iscsymf、__iswcsymf

isupper、_isupper_l、iswupper、_iswupper_l

isdigit、iswdigit、_isdigit_l、_iswdigit_l

_isctype、iswctype、_isctype_l、_iswctype_l

isgraph、iswgraph、_isgraph_l、_iswgraph_l

isxdigit、iswxdigit、_isxdigit_l、_iswxdigit_l

isleadbyte、_isleadbyte_l

解説

これらのルーチンは、文字が指定条件を満たしているかどうかを調べます。

is 系ルーチンは、–1 (EOF) ~ UCHAR_MAX (0xFF) の整数の引数に対して、意味のある結果を生成します。引数は、int 型にする必要があります。

4yc6feha.alert_caution(ja-jp,VS.90).gif注意 :

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
    iswcntrliswdigitiswpunct、または 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
    英小文字、または iswcntrliswdigitiswpunct、または iswspace の値がいずれも 0 になる実装定義ワイド文字セットのワイド文字。iswlower は、英小文字に対応するワイド文字の場合だけ、0 以外の値を返します。

  • iswprint
    空白ワイド文字 (L' ') を含む印字可能なワイド文字。

  • iswpunct
    空白ワイド文字 (L' ') でもなく、iswalnum が 0 以外になるワイド文字でもない印字可能なワイド文字。

  • iswspace
    標準の空白文字に対応するワイド文字か、iswalnum が偽になる実装定義ワイド文字セットの文字。標準の空白文字とは、空白 (L' ')、フォーム フィード (L'\f')、改行 (L'\n')、キャリッジ リターン (L'\r')、水平タブ (L'\t')、および垂直タブ (L'\v') です。

  • iswupper
    英大文字のワイド文字、または iswcntrliswdigitiswpunct、または 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                              .

参照

参照

文字分類

ロケール

setlocale、_wsetlocale

マルチバイト文字のシーケンスの解釈

to 系関数