指定したソース文字列内の文字の文字型情報を取得します。 この関数は、文字列内の文字ごとに、出力配列の対応する 16 ビット要素に 1 つ以上のビットを設定します。 各ビットは、文字、数字、またはどちらも、特定の文字の種類を識別します。
手記
この API には、特定の Unicode 文字 (特に補助範囲の文字) に関する不完全な情報や古い情報が含まれている場合があります。 より正確で包括的な Unicode 文字型情報については、u_charType、u_islower、u_isspace、u_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 パラメーター
[in] lpSrcStr
文字型を取得する文字列へのポインター。 cchSrc が負の値
[in] cchSrc
lpSrcStrで示される文字列のサイズ (文字単位)。 サイズは、ANSI バージョンの関数の場合はバイト、Unicode バージョンの場合はワイド文字を参照します。 サイズに終端の null 文字が含まれている場合、関数はその文字の文字型情報を取得します。 アプリケーションでサイズを負の整数に設定した場合、ソース文字列は null で終わると見なされ、関数は null 終端の追加文字を使用してサイズを自動的に計算します。
[out] lpCharType
16 ビット値の配列へのポインター。 この配列の長さは、ソース文字列内の文字ごとに 1 つの 16 ビット値を受け取るのに十分な大きさである必要があります。 cchSrc
戻り値
成功した場合は 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 バージョンをお勧めします。
この関数は、
この関数の 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 の