Поделиться через


_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 и _mbsnbcmp_l возвращают ошибку _NLSCMPERROR, которая определена в <string.h> и <mbstring.h>.

Заметки

Функции _mbsnbcmp сравнивают не более чем count первых байт в string1 и string2 и возвращают значение, указывающее отношение между подстроками. _mbsnbcmp — чувствительная к регистру версия _mbsnbicmp. В отличие от _mbsnbcoll, на функцию _mbsnbcmp не влияет порядок сортировки языкового стандарта. _mbsnbcmp распознает последовательности многобайтовых символов в соответствии с текущей многобайтовой кодовой страницей.

Функция _mbsnbcmp похожа на _mbsncmp за тем исключением, что _mbsncmp сравнивает строки посимвольно, а не побайтно.

На выходное значение влияет настройка категории LC_CTYPE языкового стандарта, которая определяет начальные и конечные байты многобайтовых символов. Подробнее см. в разделе setlocale. Функция _mbsnbcmp использует текущий языковой стандарт для данной функциональности, зависящей от языкового стандарта. Функция _mbsnbcmp_l идентична за исключением того, что она использует вместо этого параметр locale. Для получения дополнительной информации см. Языковой стандарт.

Если string1 или string2 является пустым указателем, эти функции вызывают обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если выполнение может быть продолжено, эти функции возвращают _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 );
}

Вывод

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

Языковой стандарт

Интерпретация последовательностей в многобайтной кодировке