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


strcoll, , wcscoll_strcoll_l_mbscoll_wcscoll_l,_mbscoll_l

Сравнивает строки с помощью текущего языкового стандарта или указанной LC_COLLATE категории состояния преобразования.

Внимание

Функции _mbscoll и _mbscoll_l не могут использоваться в приложениях, запускаемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.

Синтаксис

int strcoll(
   const char *string1,
   const char *string2
);
int wcscoll(
   const wchar_t *string1,
   const wchar_t *string2
);
int _mbscoll(
   const unsigned char *string1,
   const unsigned char *string2
);
int _strcoll_l(
   const char *string1,
   const char *string2,
   _locale_t locale
);
int wcscoll_l(
   const wchar_t *string1,
   const wchar_t *string2,
   _locale_t locale
);
int _mbscoll_l(
   const unsigned char *string1,
   const unsigned char *string2,
   _locale_t locale
);

Параметры

string1, string2
Строки с завершающим нулем для сравнения.

locale
Используемый языковой стандарт.

Возвращаемое значение

Каждая из этих функций возвращает значение, указывающее отношение к string1 string2, как показано ниже.

Возвращаемое значение string1 Отношение кstring2
< 0 string1 меньше string2
0 string1 идентично string2
> 0 string1 больше string2

Каждая из этих функций возвращает _NLSCMPERROR в случае ошибки. Чтобы использовать функцию _NLSCMPERROR, включите STRING.H или MBSTRING.H. wcscoll может завершиться ошибкой, если коды string1 string2 с широкими символами находятся NULL вне домена последовательности сортировки. При возникновении ошибки wcscoll может присвоить параметру errno значение EINVAL. Чтобы убедиться, не возникает ли ошибка при вызове функции wcscoll, присвойте параметру errno значение 0 и проверьте errno после вызова функции wcscoll.

Замечания

Каждая из этих функций сравнивает с учетом регистра строки string1 и string2 в соответствии с используемой в настоящее время кодовой страницей. Эти функции следует использовать только в том случае, если в текущей кодовой странице имеется разница между порядком набора символов и порядком лексографических символов, и это различие является интересом для сравнения строк.

Все эти функции проверяют свои параметры. Если указатель string1 string2 имеет значение NULL или INT_MAXcount больше, вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если продолжение выполнения разрешено, эти функции возвращают _NLSCMPERROR и устанавливают для errno значение EINVAL.

Сравнение двух строк — это операция, зависящая от языкового стандарта, так как каждый языковой стандарт теперь имеет разные правила для сортировки символов. Версии этих функций без суффикса _l используют текущий языковой стандарт потока для данного поведения, зависимого от языкового стандарта. Версии с суффиксом _l идентичны соответствующей функции без суффикса, однако они используют переданный языковой стандарт в качестве параметра вместо текущего языкового стандарта. Дополнительные сведения см. в разделе Locale.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Сопоставления подпрограмм универсального текста

Подпрограмма TCHAR.H _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcscoll strcoll _mbscoll wcscoll

Требования

Маршрут Обязательный заголовок
strcoll <string.h>
wcscoll <wchar.h>, <string.h>
_mbscoll, _mbscoll_l <mbstring.h>
_strcoll_l <string.h>
_wcscoll_l <wchar.h>, <string.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

См. также

Локаль
Обработка строк
Функции strcoll
localeconv
_mbsnbcoll, , _mbsnbcoll_l_mbsnbicoll_mbsnbicoll_l
setlocale, _wsetlocale
strcmp, , wcscmp_mbscmp
_stricmp, , _wcsicmp_stricmp_l_mbsicmp_wcsicmp_l,_mbsicmp_l
strncmp, , wcsncmp_mbsncmp_mbsncmp_l
_strnicmp, , _wcsnicmp_strnicmp_l_mbsnicmp_wcsnicmp_l,_mbsnicmp_l
strxfrm, , wcsxfrm_strxfrm_l_wcsxfrm_l