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 开始: 函数的 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 |