プラットフォーム SDK
GetStringTypeEx

指定した文字列に含まれる各文字の文字種情報を取得します。文字列中の各文字について、出力配列の対応する 16 ビットの要素を構成する 1 つ以上のビットがセットされます。各ビットは、対応する文字の特定の文字種(英字、数字、そのどちらでもないなど)を識別します。
GetStringTypeA 関数や GetStringTypeW 関数と異なり、#define UNICODE によって A 版、または W 版の正しい方が呼び出されます。Win32 アプリケーションでは、できるだけこの関数を使ってください。

BOOL GetStringTypeEx(
  LCID Locale,       // ロケール識別子
  DWORD dwInfoType,  // 取得する情報の種類を指定する値
  LPCTSTR lpSrcStr,  // 調査対象文字列のアドレス
  int cchSrc,        // 調査対象文字列のサイズ(バイト数または文字数)
  LPWORD lpCharType  // 出力バッファのアドレス
);

パラメータ

Locale
ロケール識別子を指定します。関数は、このロケールによって一意に定義される ANSI コードページを使って、lpSrcStr が指す文字列を ANSI から Unicode に変換します。変換した各 Unicode 文字を分析し、文字種情報を取得します。W 版は、このパラメータを無視します。

MAKELCID マクロによって作成される識別子、または次のいずれかの定数を指定します。

LOCALE_SYSTEM_DEFAULT既定のシステムロケール
LOCALE_USER_DEFAULT既定のユーザーロケール

dwInfoType
取得したい文字情報の種類を指定します。さまざまな種類が複数のレベルに分かれています(それぞれの種類に含まれる情報については、「解説」にある表を参照してください)。次のいずれかの定数を指定します。
CT_CTYPE1文字種情報を取得します。
CT_CTYPE2左右文字方向情報を取得します。
CT_CTYPE3テキスト処理情報を取得します。

lpSrcStr
文字種を調べたい文字列へのポインタを指定します。cchSrc パラメータに–1 を指定すると、文字列は NULL で終わると見なされます。この文字列は、関数の W 版を使う場合は Unicode 文字列、A 版を使う場合は ANSI 文字列でなければなりません。A 版を使う場合、ロケールが DBCS(ダブルバイト文字セット)に対応するときは、DBCS 文字列を指定することができます。
cchSrc
lpSrcStr が指す文字列のサイズをバイト単位(ANSI 版)または文字単位(Unicode 版)で指定します。文字列の最後の NULL を含めると、その NULL の文字種情報も返ります。この値に–1 を指定すると、文字列は NULL で終わると見なされ、長さが自動的に計算されます。
lpCharType
16 ビット値の配列へのポインタを指定します。この配列は、指定した文字列に含まれる文字数と同じ数の 16 ビット値を受け取るのに十分な長さでなければなりません。この配列には、指定した文字列に含まれる文字数と同じ数のワードが格納され、それぞれのワードが指定した文字列のそれぞれの文字に対応します。

戻り値

関数が成功すると、0 以外の値が返ります。
関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、GetLastError 関数を使います。GetLastError 関数は、次のいずれかのエラーコードを返します。

ERROR_INVALID_FLAGS
ERROR_INVALID_PARAMETER

解説

GetStringTypeEx 関数は、GetStringTypeA 関数と GetStringTypeW 関数のパラメータの違いによる制約を回避するためのものです。このパラメータの違いのために、#define UNICODE によって GetStringType* の正しいバージョン(A または W)を自動的に呼び出すことができません。一方、GetStringTypeEx 関数を使うと、#define UNICODE によって正しいバージョンが呼び出されます。Win32 関数では、できるだけ GetStringTypeEx 関数を使ってください。
Locale パラメータは、Unicode への文字列変換にのみ使われます。関数が返す CTYPE とは関係ありません。CTYPE は Unicode コードポイントによってのみ決まり、ロケールごとに異なることはありません。たとえばギリシャ文字は、Locale パラメータに指定する値にかかわらず、C1_ALPHA です。
lpSrcStr パラメータと lpCharType パラメータは同じにできません。同じにすると、関数が失敗します。GetLastError 関数を呼び出すと、ERROR_INVALID_PARAMETER が返ります。
文字種ビットはいくつかのレベルに分かれています。この関数を 1 度呼び出すたびに、1 つのレベルの情報を取得できます。各レベルは 16 ビットの情報に制限されています。これは、1 文字の情報を 16 ビットで表現するよう制限された他のマッピングルーチンも文字種情報を返すことができるようにするためです。
この関数がサポートする文字種情報には次のものがあります。

Ctype 1
ANSI C と POSIX(LC_CTYPE)の文字型指定関数をサポートします。dwInfoType パラメータに CT_CTYPE1 を指定すると、lpCharType パラメータが指す配列に次の定数を結合した値が格納されます。
定数名意味
C1_UPPER0x0001大文字
C1_LOWER0x0002小文字
C1_DIGIT0x000410 進数
C1_SPACE0x0008スペース
C1_PUNCT0x0010区切り記号
C1_CNTRL0x0020制御文字
C1_BLANK0x0040未定義文字
C1_XDIGIT0x008016 進数
C1_ALPHA0x0100言語上のすべての文字(アルファベット、音節文字、表意文字)

次の文字種は定数であるか、基本文字種から計算可能なため、この関数でサポートする必要はありません。

文字種説明
英数字アルファベットと数字(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_LEFTTORIGHT0x0001左から右
C2_RIGHTTOLEFT0x0002右から左
弱い文字種
C2_EUROPENUMBER0x0003ヨーロッパの数字
C2_EUROPESEPARATOR0x0004ヨーロッパの桁区切り記号
C2_EUROPETERMINATOR0x0005ヨーロッパの数字終了記号
C2_ARABICNUMBER0x0006アラビア数字
C2_COMMONSEPARATOR0x0007共通桁区切り記号
中間文字種
C2_BLOCKSEPARATOR0x0008ブロック区切り記号
C2_SEGMENTSEPARATOR0x0009セグメント区切り記号
C2_WHITESPACE0x000A空白
C2_OTHERNEUTRAL0x000Bその他の中間文字種
適用されない文字種
C2_NOTAPPLICABLE0x0000暗黙的な方向性のない文字(制御コードなど)

Ctype 3
一般的なテキスト処理または標準 C ライブラリ関数に必要な POSIX 型への拡張のプレースホルダとして使われます。これらの文字種は、Windows NT の現在のバージョンでサポートされます。dwInfoType パラメータに CT_CTYPE3 を指定すると、次の定数を結合した値が返ります。
定数名意味
C3_NONSPACING0x0001非スペース符号
C3_DIACRITIC0x0002分音符
C3_VOWELMARK0x0004母音字
C3_SYMBOL0x0008シンボル文字
C3_KATAKANA0x0010カタカナ
C3_HIRAGANA0x0020ひらがな
C3_HALFWIDTH0x0040全角文字
C3_FULLWIDTH0x0080半角文字
C3_IDEOGRAPH0x0100表意文字
C3_KASHIDA0x0200アラビックカシダ文字
C3_LEXICAL0x0400単語の一部と見なされる区切り記号(カシダ、ハイフン、女性/男性オーディナル、等号、その他)
C3_ALPHA0x8000言語学上のすべての文字(アルファベット、音節文字、表意文字)
適用されない文字種  
C3_NOTAPPLICABLE0x0000適用されない文字

Windows CE:GetStringTypeEx 関数は、Locale パラメータを無視する Unicode 版のみがサポートされます。

対応情報

  Windows NT/2000:Windows NT 3.5 以降
  Windows 95/98:Windows 95 以降
  ヘッダー:winnls.h 内で宣言
  インポートライブラリ:kernel32.lib を使用
  Unicode:Windows NT/2000 は Unicode 版と ANSI 版を実装

参照

GetStringTypeAGetStringTypeW

Page view tracker