共用方式為


CompareStringA 函式 (winnls.h)

比較識別碼所指定 地區設定 的兩個字元字串。

謹慎 使用 CompareString 不正確可能會危害應用程式的安全性。 未正確比較的字串可能會產生不正確輸入。 例如,函式可以在用於非語言比較時引發安全性問題,因為二進位標記法中相異的兩個字串可以語言上相等。 應用程式應該先測試字串是否有效,再使用這些字串,而且應該提供錯誤處理常式。 如需詳細資訊,請參閱 安全性考慮:國際功能
 
注意 為了與 Unicode 相容,您的應用程式應該偏好 CompareStringExUnicode 版本的 CompareString。 另一個偏好 CompareStringEx 的原因,是 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

指出函式如何比較兩個字串的旗標。 如需詳細定義,請參閱CompareStringExdwCmpFlags參數。

[in] lpString1

要比較的第一個字串指標。

[in] cchCount1

lpString1所指示的字串長度,不包括終止 Null 字元。 這個值代表函式的 ANSI 版本位元組,以及 Unicode 版本的寬字元。 如果字串為 null 終止,應用程式可以提供負值。 在此情況下,函式會自動判斷長度。

[in] lpString2

要比較的第二個字串指標。

[in] cchCount2

lpString2所指示的字串長度,不包括終止 Null 字元。 這個值代表函式的 ANSI 版本位元組,以及 Unicode 版本的寬字元。 如果字串為 null 終止,應用程式可以提供負值。 在此情況下,函式會自動判斷長度。

傳回值

傳回 CompareStringEx所述的值。

備註

請參閱 CompareStringEx的備註。

如果您的應用程式呼叫 CompareString的 ANSI 版本,函式會透過提供地區設定的預設字碼頁來轉換參數。 因此,應用程式永遠不會使用 CompareString 來處理 UTF-8 文字。

一般而言,針對不區分大小寫的比較, CompareString 會將小寫 「i」 對應至大寫 「I」,即使地區設定為土耳其文或亞塞塞亞塞亞利。 NORM_LINGUISTIC_CASING旗標會覆寫土耳其文或亞塞亞塞亞尼的此行為。 如果這個旗標與土耳其文或亞塞塞亞塞亞文一起指定,則 LATIN SMALL LETTER DOTLESS I (U+0131) 是拉丁大寫字母 I (U+0049) ,而 LATIN SMALL LETTER I (U+0069) 是拉丁大寫字母 I 與 DOT ABOVE (U+0130) 。

從 Windows 8 開始: 函式的 ANSI 版本會在 Winnls.h 中宣告,而 Unicode 版本會在 Stringapiset.h 中宣告。 在 Windows 8 之前,這兩個版本都是在 Winnls.h 中宣告的。

注意

winnls.h 標頭會將 CompareString 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 winnls.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

CompareStringEx

處理應用程式中的排序

國家語言支援

國家語言支援函式

安全性考慮:國際功能

使用 Unicode 正規化來表示字串