次の方法で共有


GetStringTypeExW 関数 (stringapiset.h)

手記

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

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

注意GetStringTypeEx 関数を誤って使用すると、アプリケーションのセキュリティが損なわれる可能性があります。 バッファー オーバーフローを回避するには、アプリケーションで出力バッファー サイズを正しく設定する必要があります。 セキュリティ情報の詳細については、「セキュリティに関する考慮事項: Windows ユーザー インターフェイスの」を参照してください。
 
GetStringTypeA の近い相対値や GetStringTypeWとは異なり、この関数は、#define UNICODE スイッチを使用して適切な ANSI または Unicode 動作を示します。 これは、文字型の取得に推奨される関数です。
 

構文

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. パラメーター値のいずれかが無効でした。

備考

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

この関数は、指定されたロケールの 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 の

各国語サポート

各国語サポート関数