_mbsnbcmp, _mbsnbcmp_l

比较第一个 n 字节两个多字节字符字符串。

重要

此 API 不能在 Windows 运行时执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW

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
);

参数

  • string1, string2
    比较的字符串。

  • count
    比较的字节数。

  • locale
    使用的区域设置。

返回值

返回一个值 string1 子字符串和 string之间的关系。

返回值

描述

< 0

string1 子字符串比 string2 子字符串是小于。

0

string1 子字符串与 string2 子字符串是相同的。

> 0

string1 子字符串比 string2 子字符串大。

在错误,_mbsnbcmp 返回 _NLSCMPERROR,在 String.h 和 Mbstring.h 中定义。

备注

_mbsnbcmp 功能字典地比较,至多,在 string1 的第一个 count 字节和 string2 并返回指示子字符串之间关系的值。 _mbsnbcmp 是 _mbsnbicmp的一个区分大小写的版本。 不同 strcoll,_mbsnbcmp 不受影响的区域设置的。 _mbsnbcmp 根据当前多字节 代码页识别多字节字符序列。

_mbsnbcmp 类似于 _mbsncmp,除此之外,_mbsncmp 按照字符串比较字符串而不是按字节。

输出值受 LC_CTYPE 类别以区域设置的影响;请参见 setlocale 有关更多信息。 没有 _l 后缀此功能的版本。此区域设置相关的行为使用当前区域设置;具有 _l 后缀相同的版本,只不过它使用的区域设置参数。 有关更多信息,请参见区域设置

如果 string1 或 string2 是 null 指针,此函数调用的参数无效处理程序,如 参数验证所述。 如果执行允许继续,该函数返回 _NLSCMPERROR,并 errno 设置为 EINVAL。

一般文本例程映射

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 );
}

Output

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

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见平台调用示例

请参见

参考

字符串操作(crt)

_mbsnbcat, _mbsnbcat_l

_mbsnbicmp, _mbsnbicmp_l

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l

区域设置

多字节字符序列的说明