CompareStringA 函数 (winnls.h)
比较由标识符指定的 区域设置 的两个字符串。
语法
int CompareStringA(
[in] LCID Locale,
[in] DWORD dwCmpFlags,
[in] PCNZCH lpString1,
[in] int cchCount1,
[in] PCNZCH lpString2,
[in] int cchCount2
);
参数
[in] Locale
区域设置标识符 用于比较的区域设置。 可以使用 MAKELCID 宏创建区域设置标识符或使用以下预定义值之一。
- LOCALE_CUSTOM_DEFAULT
- LOCALE_CUSTOM_UI_DEFAULT
- LOCALE_CUSTOM_UNSPECIFIED
- LOCALE_INVARIANT
- LOCALE_SYSTEM_DEFAULT
- LOCALE_USER_DEFAULT
[in] dwCmpFlags
指示函数如何比较两个字符串的标志。 有关详细定义,请参阅 CompareStringEx的 dwCmpFlags 参数。
[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 |