GetStringTypeW 関数 (stringapiset.h)

指定した Unicode ソース文字列内の文字の文字型情報を取得します。 この関数は、文字列内の文字ごとに、出力配列の対応する 16 ビット要素に 1 つ以上のビットを設定します。 各ビットは、文字、数字、またはどちらも、特定の文字の種類を識別します。

注意GetStringTypeW 関数を誤って使用すると、アプリケーションのセキュリティが損なわれる可能性があります。 バッファー オーバーフローを回避するには、アプリケーションで出力バッファー サイズを正しく設定する必要があります。 セキュリティ情報の詳細については、「 セキュリティに関する考慮事項: Windows ユーザー インターフェイス」を参照してください。

 

構文

BOOL GetStringTypeW(
  [in]  DWORD                         dwInfoType,
  [in]  _In_NLS_string_(cchSrc)LPCWCH lpSrcStr,
  [in]  int                           cchSrc,
  [out] LPWORD                        lpCharType
);

パラメーター

[in] dwInfoType

取得する文字型情報を指定するフラグ。 このパラメーターには、次の値を指定できます。 「解説」セクションで説明されているように、文字の種類は異なるレベルに分けられます。

フラグ 説明
CT_CTYPE1
文字型情報を取得します。
CT_CTYPE2
双方向レイアウト情報を取得します。
CT_CTYPE3
テキスト処理情報を取得します。

[in] lpSrcStr

文字型を取得する Unicode 文字列へのポインター。 cchSrc が負の値に設定されている場合、文字列は null で終わると見なされます。

[in] cchSrc

lpSrcStr で示される文字列のサイズ (文字数)。 サイズに終端の null 文字が含まれている場合、関数はその文字の文字型情報を取得します。 アプリケーションでサイズを負の整数に設定した場合、ソース文字列は null で終わると見なされ、関数は null 終端の追加文字を使用してサイズを自動的に計算します。

[out] lpCharType

16 ビット値の配列へのポインター。 この配列の長さは、ソース文字列内の文字ごとに 1 つの 16 ビット値を受け取るのに十分な大きさにする必要があります。 cchSrc が負の数でない場合、lpCharTypecchSrc 要素を持つ単語の配列である必要があります。 cchSrc が負の数に設定されている場合、lpCharTypelpSrcStr + 1 要素を持つ単語の配列です。 関数が戻るときに、この配列には、ソース文字列内の各文字に対応する 1 つの単語が含まれます。

戻り値

成功した場合は 0 以外の値を返し、それ以外の場合は 0 を返します。 拡張エラー情報を取得するために、アプリケーションは GetLastError を呼び出すことができます。このエラー コードは、次のいずれかのエラー コードを返すことができます。

  • ERROR_INVALID_FLAGS。 フラグに指定された値が無効です。
  • ERROR_INVALID_PARAMETER。 パラメーター値のいずれかが無効です。

注釈

文字列関数の使用方法の概要については、「 文字列」を参照してください。

lpSrcStr パラメーターと lpCharType パラメーターの値は同じにすることはできません。 同じ場合、関数は ERROR_INVALID_PARAMETER で失敗します。

対応する GetStringTypeA 関数で使用される Locale パラメーターは、この関数では使用されません。 パラメーターの違いにより、アプリケーションは、#define UNICODE スイッチを使用して 、GetStringType* 関数の適切な ANSI または Unicode バージョンを自動的に呼び出すことはできません。 アプリケーションでは、推奨される関数である GetStringTypeEx を使用することで、この制限を回避できます。

サポートされている文字型

文字型ビットは、複数のレベルに分割されます。 1 つのレベルの情報は、この関数の 1 回の呼び出しで取得できます。 各レベルは 16 ビットの情報に制限されているため、1 文字あたり 16 ビットの表現に制限されている他のマッピング関数でも文字型情報を返すことができます。

Ctype 1

これらの型は、ANSI C および POSIX (LC_CTYPE) 文字型指定関数をサポートしています。 dwInfoType が CT_CTYPE1 に設定されている場合、これらの値のビットごとの OR が出力バッファーの配列で取得されます。 DBCS ロケールの場合、型属性はナロー文字とワイド文字の両方に適用されます。 日本語のひらがな文字とカタカナ文字、および漢字の表意文字はすべて、C1_ALPHA属性を持っています。

名前 意味
C1_UPPER 0x0001 大文字
C1_LOWER 0x0002 小文字
C1_DIGIT 0x0004 数字
C1_SPACE 0x0008 スペース文字
C1_PUNCT 0x0010 句読点
C1_CNTRL 0x0020 制御文字
C1_BLANK 0x0040 空白文字
C1_XDIGIT 0x0080 16 進数
C1_ALPHA 0x0100 任意の言語文字: アルファベット、音節、または表意文字
C1_DEFINED 0x0200 定義された文字ですが、他のC1_* 型の 1 つではありません
 

次の文字型は、定数型または基本型から計算可能であり、この関数でサポートされている必要はありません。

説明
英数字 アルファベット文字と数字 (C1_ALPHAとC1_DIGIT)
印刷可能 グラフィック文字とブランク (C1_CNTRLを除くすべてのC1_* 型)
 

Ctype 2

これらの型は、Unicode テキストの適切なレイアウトをサポートします。 DBCS ロケールの場合、文字タイプはナロー文字とワイド文字の両方に適用されます。 方向属性は、Unicode によって標準化された双方向レイアウト アルゴリズムによって正確な結果が生成されるように割り当てられます。 これらの型は相互に排他的です。 これらの属性の使用方法の詳細については、「 Unicode 標準」を参照してください。

名前 意味
Strong
C2_LEFTTORIGHT 0x0001 左から右
C2_RIGHTTOLEFT 0x0002 右から左
weak
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 型の拡張のプレースホルダーを意図しています。 dwInfoType を CT_CTYPE3 に設定すると、これらの値のビットごとの OR が取得されます。 DBCS ロケールの場合、Ctype 3 属性は、狭い文字とワイド文字の両方に適用されます。 日本語のひらがなとカタカナ、漢字の表意文字はすべて、C3_ALPHA属性を持っています。

名前 意味
C3_NONSPACING 0x0001 非パッチ マーク
C3_DIACRITIC 0x0002 Diacritic nonspacing mark
C3_VOWELMARK 0x0004 Vowel nonspacing mark
C3_SYMBOL 0x0008 Symbol
C3_KATAKANA 0x0010 カタカナ文字
C3_HIRAGANA 0x0020 ひらがな文字
C3_HALFWIDTH 0x0040 半角 (狭い) 文字
C3_FULLWIDTH 0x0080 全角 (ワイド) 文字
C3_IDEOGRAPH 0x0100 Ideographic 文字
C3_KASHIDA 0x0200 アラビア語のカシダ文字
C3_LEXICAL 0x0400 単語の一部としてカウントされる句読点 (kashida、ハイフン、女性/男性の序数インジケーター、等号など)
C3_ALPHA 0x8000 すべての言語文字 (アルファベット、音節、およびイデオロギー)
C3_HIGHSURROGATE 0x0800 Windows Vista: 上位サロゲート コード ユニット
C3_LOWSURROGATE 0x1000 Windows Vista: 低サロゲート コード ユニット
適用なし
C3_NOTAPPLICABLE 0x0000 適用なし
 

C3_HIGHSURROGATEとC3_LOWSURROGATEは完全のためにのみ一覧表示され、この関数には指定しないでください。 これらは Unicode にのみ関連します。

Windows 8以降: GetStringTypeW は Stringapiset.h で宣言されています。 Windows 8する前は、Winnls.h で宣言されていました。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー stringapiset.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

GetStringTypeA

GetStringTypeEx

各国語サポート

各国語サポート関数