compareStringA 函数 (winnls.h)

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

谨慎 错误地使用 CompareString 可能会损害应用程序的安全性。 未正确比较的字符串可能会产生无效的输入。 例如, 函数在用于非语言比较时可能会引发安全问题,因为两个在二进制表示形式上不同的字符串在语言上可能等效。 应用程序应在使用字符串之前测试字符串的有效性,并应提供错误处理程序。 有关详细信息,请参阅 安全注意事项:国际功能
 
注意 为了与 Unicode 兼容,应用程序应首选 CompareStringExCompareString 的 Unicode 版本。 首选 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 的备注。

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

通常,对于不区分大小写的比较, CompareString 会将小写的“i”映射到大写的“I”,即使区域设置是土耳其语或阿塞拜疆语。 NORM_LINGUISTIC_CASING国旗覆盖了土耳其或阿塞拜疆人的这种行为。 如果将此标志与土耳其语或阿塞拜疆语一起指定,则拉丁文小写字母 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 标头将 CompareString 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

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

另请参阅

CompareStringEx

处理应用程序中的排序

国家/地区语言支持

国家/地区语言支持函数

安全注意事项:国际功能

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