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 开始:Winnls.h 中声明了函数的 ANSI 版本,Unicode 版本在 Stringapiset.h 中声明。 在 Windows 8 之前,这两个版本都在 Winnls.h 中声明。

注意

winnls.h 标头将 CompareString 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

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

另请参阅

CompareStringEx

处理应用程序中的排序

国家语言支持

国家语言支持函数

安全注意事项:国际功能

使用 Unicode 规范化表示字符串