_mbsnbcmp_mbsnbcmp_l

比较两个多字节字符字符串的前 n 个字节。

重要

此 API 不能用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数

语法

int _mbsnbcmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count
);
int _mbsnbcmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count,
   _locale_t locale
);

参数

string1string2
要比较的字符串。

count
要比较的字节数。

locale
要使用的区域设置。

返回值

返回值指示 string1string2 的子字符串之间的序号关系。

返回值 说明
< 0 string1 子字符串小于 string2 子字符串。
0 string1 子字符串等于 string2 子字符串。
> 0 string1 子字符串大于 string2 子字符串。

参数验证错误时,_mbsnbcmp_mbsnbcmp_l 返回 _NLSCMPERROR,该返回值是在 <string.h> 和 <mbstring.h> 中定义的。

注解

_mbsnbcmp 函数最多比较 countstring1 的前 string2 个字节,并返回一个指示子字符串之间关系的值。 _mbsnbcmp_mbsnbicmp 的区分大小写版本。 不同于 _mbsnbcoll_mbsnbcmp 不受区域设置的排序规则顺序影响。 _mbsnbcmp 根据当前的多字节代码页识别多字节字符序列。

_mbsnbcmp 类似于 _mbsncmp,只不过 _mbsncmp 按字符(而不是按字节)对字符串进行比较。

输出值受区域设置的 LC_CTYPE 类别设置影响,它指定多字节字符的前导字节和尾随字节。 有关详细信息,请参阅 setlocale_mbsnbcmp 函数对与区域设置相关的行为使用当前区域设置。 _mbsnbcmp_l 函数完全相同,只不过它转而使用 locale 参数。 有关详细信息,请参阅 Locale

如果 string1string2 是 null 指针,则这些函数将调用无效的参数处理程序,如参数验证中所述。 如果允许执行继续,则函数将返回 _NLSCMPERROR 并将 errno 设置为 EINVAL

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

一般文本例程映射

Tchar.h 例程 _UNICODE_MBCS 未定义 _MBCS 已定义 _UNICODE 已定义
_tcsncmp strncmp _mbsnbcmp wcsncmp
_tcsncmp_l strncmp _mbsnbcml wcsncmp

要求

例程 必需的标头
_mbsnbcmp <mbstring.h>
_mbsnbcmp_l <mbstring.h>

有关兼容性的详细信息,请参阅 兼容性

示例

// crt_mbsnbcmp.c
#include <mbstring.h>
#include <stdio.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";

int main( void )
{
   char tmp[20];
   int result;
   printf( "Compare strings:\n          %s\n", string1 );
   printf( "          %s\n\n", string2 );
   printf( "Function: _mbsnbcmp (first 10 characters only)\n" );
   result = _mbsncmp( string1, string2 , 10 );
   if( result > 0 )
      _mbscpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      _mbscpy_s( tmp, sizeof(tmp), "less than" );
   else
      _mbscpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:   String 1 is %s string 2\n\n", tmp );
   printf( "Function: _mbsnicmp _mbsnicmp (first 10 characters only)\n" );
   result = _mbsnicmp( string1, string2, 10 );
   if( result > 0 )
      _mbscpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      _mbscpy_s( tmp, sizeof(tmp), "less than" );
   else
      _mbscpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:   String 1 is %s string 2\n\n", tmp );
}

输出

Compare strings:
          The quick brown dog jumps over the lazy fox
          The QUICK brown fox jumps over the lazy dog

Function: _mbsnbcmp (first 10 characters only)
Result:   String 1 is greater than string 2

Function: _mbsnicmp _mbsnicmp (first 10 characters only)
Result:   String 1 is equal to string 2

另请参阅

字符串操作
_mbsnbcat_mbsnbcat_l
_mbsnbicmp_mbsnbicmp_l
strncmpwcsncmp_mbsncmp_mbsncmp_l
_strnicmp_wcsnicmp_mbsnicmp_strnicmp_l_wcsnicmp_l_mbsnicmp_l
区域设置
多字节字符序列的解释