プラットフォーム SDK
GetStringTypeW
指定した文字列に含まれる各文字の文字種情報を取得します。文字列中のそれぞれの文字について、出力配列の対応する 16 ビットの要素を構成する 1 つ以上のビットがセットされます。各ビットは、対応する文字の特定の文字種(英字、数字、そのどちらでもないなど)を識別します。
BOOL GetStringTypeW(
DWORD dwInfoType, // 情報の種類を指定する値
LPCWSTR lpSrcStr, // 調査対象文字列のアドレス
int cchSrc, // 文字列に含まれる文字数
LPWORD lpCharType // 出力バッファのアドレス
);
パラメータ
- dwInfoType
- 取得したい文字情報の種類を指定します。さまざまな種類がいくつかのレベルに分かれています(それぞれの種類に含まれる情報のリストを「解説」に示します)。情報の種類を表す次のいずれかの定数を指定します。
| CT_CTYPE1 | 文字種情報を取得します。 |
| CT_CTYPE2 | 左右文字方向情報を取得します。 |
| CT_CTYPE3 | テキスト処理情報を取得します。 |
- lpSrcStr
- 文字種を調べたい文字列へのポインタを指定します。cchSrc パラメータに–1 を指定すると、文字列は NULL で終わると見なされます。この文字列は、Unicode 文字列でなければなりません。
- cchSrc
- lpSrcStr が指す文字列のサイズ(文字数)を指定します。文字列の最後の NULL を含めると、その NULL の文字種情報も返ります。–1 を指定すると、文字列は NULL で終わると見なされ、長さが自動的に計算されます。
- lpCharType
- 16 ビット値の配列へのポインタを指定します。この配列は、指定した文字列に含まれる文字数と同じ数の 16 ビット値を受け取るのに十分な長さでなければなりません。この配列には、指定した文字列に含まれる文字数と同じ数のワードが格納され、それぞれのワードが指定した文字列のそれぞれの文字に対応します。
戻り値
関数が成功すると、0 以外の値が返ります。
関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、GetLastError 関数を使います。GetLastError 関数は、次のいずれかのエラーコードを返します。
ERROR_INVALID_FLAGS
ERROR_INVALID_PARAMETER
解説
GetStringTypeA 関数のパラメータは、GetStringTypeW 関数より 1 つ多くなっています。GetStringTypeA 関数では、その最初の Locale パラメータに LCID を指定します。このパラメータは、GetStringTypeW 関数にはありません。この違いから、#define UNICODE によって GetStringType* の正しいバージョン(A または W)を自動的に呼び出すことができません。この制約は、GetStringTypeEx 関数を使うと回避できます。Win32 関数では、できるだけ GetStringTypeEx 関数を使ってください。
lpSrcStr パラメータと lpCharType パラメータは同じにできません。同じにすると、関数が失敗します。GetLastError 関数を呼び出すと、ERROR_INVALID_PARAMETER が返ります。
文字種ビットはいくつかのレベルに分かれています。この関数を 1 度呼び出すたびに 1 つのレベルの情報を取得できます。各レベルは 16 ビットの情報に制限されています。これは、1 文字の情報を 16 ビットで表現するよう制限された他のマッピングルーチンも文字種情報を返すことができるようにするためです。
この関数がサポートする文字種情報には次のものがあります。
- Ctype 1
- ANSI C と POSIX(LC_CTYPE)の文字型指定関数をサポートします。dwInfoType パラメータに CT_CTYPE1 を指定すると、lpCharType が指す配列に次の定数を結合した値が格納されます。
| 定数名 | 値 | 意味 |
| C1_UPPER | 0x0001 | 大文字 |
| C1_LOWER | 0x0002 | 小文字 |
| C1_DIGIT | 0x0004 | 10 進数 |
| C1_SPACE | 0x0008 | スペース |
| C1_PUNCT | 0x0010 | 区切り記号 |
| C1_CNTRL | 0x0020 | 制御文字 |
| C1_BLANK | 0x0040 | 未定義文字 |
| C1_XDIGIT | 0x0080 | 10 進数 |
| C1_ALPHA | 0x0100 | 言語上のすべての文字(アルファベット、音節文字、表意文字) |
次の文字種は定数であるか、基本文字種から計算可能であるため、この関数でサポートする必要はありません。
| 文字種 | 説明 |
| 英数字 | アルファベットと数字(C1_ALPHA と C1_DIGIT) |
| 印字可能文字 | グラフィック文字とブランク文字(C1_CNTRL を除くすべての C1_* 文字種) |
- Ctype 2
- Unicode テキストの正しい文字方向をサポートします。方向属性は、Unicode によって標準化されている左右文字方向アルゴリズムで正確な結果を得るように割り当てられます。次の文字種は相互に排他的です。定数を 2 つ以上同時に指定することはできません。これらの属性の詳細については、『The Unicode Standard: Worldwide Character Encoding, Volumes 1 and 2, Addison Wesley Publishing Company: 1991, 1992, ISBN 0201567881』を参照してください。
| 定数名 | 値 | 意味 |
| 強い文字種 | | |
| C2_LEFTTORIGHT | 0x0001 | 左から右 |
| C2_RIGHTTOLEFT | 0x0002 | 右から左 |
| 強い文字種 | | |
| C2_EUROPENUMBER | 0x0003 | ヨーロッパの数字 |
| C2_EUROPESEPARATOR | 0x0004 | ヨーロッパの桁区切り記号 |
| C2_EUROPETERMINATOR | 0x0005 | ヨーロッパの数字終了記号 |
| C2_ARABICNUMBER | 0x0006 | アラビア数字 |
| C2_COMMONSEPARATOR | 0x0007 | 共通桁区切り記号 |
| 中間文字種 | | |
| C2_BLOCKSEPARATOR | 0x0008 | ブロック区切り記号 |
| C2_SEGMENTSEPARATOR | 0x0009 | セグメント区切り記号 |
| C2_WHITESPACE | 0x000A | 空白 |
| C2_OTHERNEUTRAL | 0x000B | その他の中間文字種 |
| 適用されない文字種 | | |
| C2_NOTAPPLICABLE | 0x0000 | 暗黙的な方向性のないもの(制御コードなど) |
- Ctype 3
- 一般的なテキスト処理または標準 C ライブラリ関数に必要な POSIX 型への拡張のプレースホルダとして使われます。これらの文字種は、Windows NT の現在のバージョンでサポートされます。dwInfoType パラメータに CT_CTYPE3 を指定すると、次の定数を結合した値が返ります。
| 定数名 | 値 | 意味 |
| C3_NONSPACING | 0x0001 | 非スペース符号 |
| C3_DIACRITIC | 0x0002 | 分音符 |
| C3_VOWELMARK | 0x0004 | 母音字 |
| C3_SYMBOL | 0x0008 | シンボル文字 |
| C3_KATAKANA | 0x0010 | カタカナ |
| C3_HIRAGANA | 0x0020 | ひらがな |
| C3_HALFWIDTH | 0x0040 | 半角文字 |
| C3_FULLWIDTH | 0x0080 | 全角文字 |
| C3_IDEOGRAPH | 0x0100 | 表意文字 |
| C3_KASHIDA | 0x0200 | アラビックカシダ文字 |
| C3_LEXICAL | 0x0400 | 単語の一部と見なされる区切り記号(カシダ、ハイフン、女性/男性オーディナル、等号、その他) |
| C3_ALPHA | 0x8000 | 言語学上のすべての文字(アルファベット、音節文字、表意文字) |
| 適用されない文字種 | | |
| C3_NOTAPPLICABLE | 0x0000 | 適用されない文字 |
対応情報
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:サポートされていません。
ヘッダー:winnls.h 内で宣言
インポートライブラリ:kernel32.lib を使用
参照
、GetStringTypeA、GetStringTypeEx