次の方法で共有


GetStringTypeW 関数 (stringapiset.h)

手記

この API には、特定の Unicode 文字 (特に補助範囲の文字) に関する不完全な情報や古い情報が含まれている場合があります。 より正確で包括的な Unicode 文字型情報については、u_charTypeu_isloweru_isspaceu_ispunctなどの同等の ICU API の使用を検討してください。 Windows での ICU API の使用に関するガイダンスについては、「Windowsでの ICU の概要」を参照してください。

指定した 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 負の数でない場合は、lpCharType は cchSrc 要素 単語の配列にする必要があります。 cchSrc が負の数に設定されている場合、lpCharType は、lpSrcStr + 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 標準」を参照してください。

名前 価値 意味
強い
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 型の拡張のためのプレースホルダーです。 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 記号
C3_KATAKANA 0x0010 カタカナ文字
C3_HIRAGANA 0x0020 ひらがな文字
C3_HALFWIDTH 0x0040 半角 (狭い) 文字
C3_FULLWIDTH 0x0080 全角 (ワイド) 文字
C3_IDEOGRAPH 0x0100 表意文字
C3_KASHIDA 0x0200 アラビア語の樫田文字
C3_LEXICAL 0x0400 単語の一部としてカウントされる句読点 (kashida、ハイフン、女性/男性形の序数インジケーター、等号など)
C3_ALPHA 0x8000 すべての言語文字 (アルファベット、音節、および表意)
C3_HIGHSURROGATE 0x0800 Windows Vista: High サロゲート コード ユニット
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 アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー stringapiset.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

GetStringTypeA を する

GetStringTypeEx の

各国語サポート

各国語サポート関数