次の方法で共有


CompareStringA 関数 (winnls.h)

識別子で指定された ロケール、2 つの文字列を比較します。

CompareString を誤って使用 注意すると、アプリケーションのセキュリティが損なわれる可能性があります。 正しく比較されない文字列では、無効な入力が生成される可能性があります。 たとえば、この関数は、非言語的な比較に使用される場合にセキュリティの問題を発生させる可能性があります。これは、バイナリ表現で異なる 2 つの文字列が言語的に同等である可能性があるためです。 アプリケーションでは、使用する前に文字列の有効性をテストし、エラー ハンドラーを提供する必要があります。 詳細については、「セキュリティに関する考慮事項: 国際機能」を参照してください。
 
メモ Unicode との互換性のために、アプリケーションでは CompareStringEx または Unicode バージョンの compareString優先する必要があります。 CompareStringEx 優先するもう 1 つの理由は、Microsoft が相互運用性の理由から、新しいロケールのロケール識別子ではなくロケール名の使用に移行していることです。 Windows Vista 以降でのみ実行されるアプリケーションは、CompareStringExを使用する必要があります。
 

構文

int CompareStringA(
  [in] LCID   Locale,
  [in] DWORD  dwCmpFlags,
  [in] PCNZCH lpString1,
  [in] int    cchCount1,
  [in] PCNZCH lpString2,
  [in] int    cchCount2
);

パラメーター

[in] Locale

比較に使用されるロケールのロケール識別子MAKELCID マクロを使用してロケール識別子を作成するか、次のいずれかの定義済み値を使用できます。

[in] dwCmpFlags

関数が 2 つの文字列を比較する方法を示すフラグ。 詳細な定義については、CompareStringExの dwCmpFlags パラメーター 参照してください。

[in] lpString1

比較する最初の文字列へのポインター。

[in] cchCount1

lpString1で示される文字列の長さ (終端の null 文字を除く)。 この値は、ANSI バージョンの関数のバイトと Unicode バージョンのワイド文字を表します。 文字列が null で終わる場合、アプリケーションは負の値を指定できます。 この場合、関数は長さを自動的に決定します。

[in] lpString2

比較する 2 番目の文字列へのポインター。

[in] cchCount2

lpString2で示される文字列の長さ (終端の null 文字を除く)。 この値は、ANSI バージョンの関数のバイトと Unicode バージョンのワイド文字を表します。 文字列が null で終わる場合、アプリケーションは負の値を指定できます。 この場合、関数は長さを自動的に決定します。

戻り値

CompareStringExで説明されている値を返します。

備考

CompareStringExの に関する解説を参照してください。

アプリケーションで CompareStringの ANSI バージョンを呼び出している場合、関数は指定されたロケールの既定のコード ページを使用してパラメーターを変換します。 したがって、アプリケーションで UTF-8 テキスト 処理するために CompareString を使用することはできません。

通常、大文字と小文字を区別しない比較では、CompareString は、ロケールがトルコ語またはアゼルバイジャン語であっても、小文字の "i" を大文字の "I" にマップします。 NORM_LINGUISTIC_CASING フラグは、トルコ語またはアゼルバイジャン語の場合、この動作をオーバーライドします。 このフラグがトルコ語またはアゼルバイジャン語と組み合わせて指定されている場合、LATIN SMALL LETTER DOTLESS I (U+0131) は小文字の英大文字 I (U+0049) で、ラテン小文字 I (U+0069) はラテン小文字 I の小文字の形式で、上記のドット付き (U+0130) です。

Windows 8 以降: ANSI バージョンの関数は Winnls.h で宣言され、Unicode バージョンは Stringapiset.h で宣言されています。 Windows 8 より前は、両方のバージョンが Winnls.h で宣言されていました。

手記

winnls.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CompareString を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

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

関連項目

CompareStringEx の

アプリケーション での並べ替え処理の

各国語サポート

各国語サポート関数

セキュリティに関する考慮事項: 国際機能

Unicode 正規化を使用して文字列を表す