compareString 函数 (winnls.h)

比较标识符指定的 区域设置 的两个字符串。

谨慎 错误地使用 CompareString 可能会危及应用程序的安全性。 未正确比较的字符串可能会生成无效的输入。 例如,函数在用于非语言比较时可能会引发安全问题,因为二进制表示形式中不同的两个字符串在语言上可能等效。 应用程序在使用字符串之前应测试字符串的有效性,并应提供错误处理程序。 有关详细信息,请参阅 安全注意事项:国际功能
 
注意 为了与 Unicode 兼容,应用程序应首选 CompareStringExUnicode 版本的 CompareString。 首选 CompareStringEx 的另一个原因是,出于互操作性的原因,Microsoft 正在迁移到使用区域设置名称而不是新区域设置的区域设置标识符。 将仅在 Windows Vista 上运行且以后运行的任何应用程序都应使用 CompareStringEx
 

语法

int CompareString(
  [in] LCID    Locale,
  [in] DWORD   dwCmpFlags,
  [in] LPCTSTR lpString1,
  [in] int     cchCount1,
  [in] LPCTSTR 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 的备注。

如果应用程序调用 AnSI 版本的 CompareString,则函数通过提供的区域设置的默认代码页转换参数。 因此,应用程序永远不能使用 CompareString 来处理 UTF-8 文本。

通常,对于不区分大小写的比较, CompareString 会将小写“i”映射到大写“I”,即使区域设置是土耳其语或阿塞拜疆语。 NORM_LINGUISTIC_CASING标志覆盖了土耳其或阿塞拜疆人的这种行为。 如果此标志与土耳其语或阿塞拜疆语一起指定,则拉丁文小写字母 DOTLESS I (U+0131) 是拉丁文大写字母 I (U+0049) 和拉丁文小写字母 I (U+0069) 是拉丁文大写字母 I 的小写形式,上面为 DOT (U+0130) 。

从 Windows 8 开始:函数的 ANSI 版本在 Winnls.h 中声明,Unicode 版本在 Stringapiset.h 中声明。 在Windows 8之前,这两个版本都在 Winnls.h 中声明。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winnls.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

CompareStringEx

处理应用程序中的排序

国家语言支持

国家语言支持函数

安全注意事项:国际功能

使用 Unicode 规范化来表示字符串