次の方法で共有


GetStringTypeExW 関数 (stringapiset.h)

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

手記

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

構文

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

パラメーター

[in] Locale

ロケールを指定するロケール識別子。 この値は、ANSI コード ページを一意に定義します。 MAKELCID マクロを使用してロケール識別子を作成するか、次のいずれかの定義済み値を使用できます。

Windows Vista 以降 : 次のカスタム ロケール識別子もサポートされています。

[in] dwInfoType

取得する文字型情報を指定するフラグ。 使用可能なフラグ値については、GetStringTypeWの dwInfoType パラメーター を参照してください。 文字型ビットの詳細については、「GetStringTypeWの解説」を参照してください。

[in] lpSrcStr

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

[in] cchSrc

lpSrcStrで示される文字列のサイズ (文字単位)。 サイズは、ANSI バージョンの関数の場合はバイト、Unicode バージョンの場合はワイド文字を参照します。 サイズに終端の 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. パラメーター値のいずれかが無効でした。

備考

Important

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

この関数は、近い相対値 GetStringTypeA および GetStringTypeW とは異なり、#define UNICODE スイッチを使用して適切な ANSI または Unicode 動作を示します。 これは、文字型の取得に推奨される関数です。

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

この関数は、指定されたロケールの ANSI コード ページを使用して、ソース文字列を ANSI から Unicode に変換します。 次に、各 Unicode 文字の文字型情報を分析します。

この関数の ANSI バージョンは、ソース文字列を Unicode に変換し、対応する GetStringTypeW 関数を呼び出します。 したがって、出力バッファー内の単語は、元の ANSI 文字列ではなく、Unicode に相当します。 ANSI から Unicode への変換により、文字列の長さが変更される場合があります。たとえば、ANSI 文字のペアを 1 つの Unicode 文字にマップできます。 したがって、出力バッファー内の単語と元の ANSI 文字列内の文字の対応関係は、マルチバイト文字列など、すべてのケースで 1 対 1 ではありません。 したがって、この関数の ANSI バージョンは、複数の文字列に対して限定的に使用されます。 代わりに、関数の Unicode バージョンをお勧めします。

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

この関数の ANSI バージョンを Unicode のみのロケール識別子と共に使用すると、オペレーティング システムがシステム コード ページを使用するため、関数は成功する可能性があります。 ただし、システム コード ページで未定義の文字は、文字列に疑問符 (?) として表示されます。

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

Locale パラメーターは、Unicode への文字列変換を実行するためにのみ使用されます。 アプリケーションによって提供される CTYPE* 値とは関係ありません。 これらの値は Unicode コード ポイントによってのみ決定され、ロケールによって異なるわけではありません。 たとえば、ギリシャ文字は、ロケールの任意の値に対してC1_ALPHA 指定されます。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー stringapiset.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

GetStringTypeW の

各国語サポート

各国語サポート関数