wcscoll
Определено в заголовке <wchar.h> |
||
|---|---|---|
int wcscoll( const wchar_t *lhs, const wchar_t *rhs ); |
(с C95) |
Сравнивает две строки широких символов с завершением нулем в соответствии с порядком сортировки, определённым категорией LC_COLLATE текущего установленного языка.
Параметры
| lhs, rhs | - | указатели на строки широких символов с завершением нулем, которые нужно сравнить |
Возвращаемое значение
Отрицательное значение, если lhs меньше (предшествует) rhs.
0, если lhs равно rhs.
Положительное значение, если lhs больше (следует за) rhs.
Примечания
Порядок сортировки — это лексикографический порядок: позиция буквы в национальном алфавите (ее эквивалентный класс) имеет более высокий приоритет, чем ее регистр или вариант. В рамках эквивалентного класса строчные символы сортируются перед их заглавными эквивалентами, а порядок, специфичный для языка, может применяться к символам с диакритическими знаками. В некоторых языках группы символов сравниваются как единые единицы сортировки. Например, "ch" в чешском языке следует за "h" и предшествует "i", а "dzs" в венгерском языке следует за "dz" и предшествует "g".
Пример
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
void try_compare(const wchar_t* p1, const wchar_t* p2)
{
if(wcscoll(p1, p2) < 0)
printf("%ls before %ls\n", p1, p2);
else
printf("%ls before %ls\n", p2, p1);
}
int main(void)
{
setlocale(LC_ALL, "en_US.utf8");
printf("In the American locale: ");
try_compare(L"hrnec", L"chrt");
setlocale(LC_COLLATE, "cs_CZ.utf8");
printf("In the Czech locale: ");
try_compare(L"hrnec", L"chrt");
setlocale(LC_COLLATE, "en_US.utf8");
printf("In the American locale: ");
try_compare(L"år", L"ängel");
setlocale(LC_COLLATE, "sv_SE.utf8");
printf("In the Swedish locale: ");
try_compare(L"år", L"ängel");
}Возможный вывод:
In the American locale: chrt before hrnec In the Czech locale: hrnec before chrt In the American locale: ängel before år In the Swedish locale: år before ängel
Ссылки
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.29.4.4.2 Функция wcscoll (стр. 433-434)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.24.4.4.2 Функция wcscoll (стр. 379-380)
См. также
| сравнивает две строки в соответствии с текущим языком (функция) |
|
|
(C95) |
преобразует строку широких символов таким образом, что wcscmp даст тот же результат, что и wcscoll (функция) |
|
(C95) |
сравнивает две строки широких символов (функция) |
Документация C++ для wcscoll |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/string/wide/wcscoll