strcoll
|
Определено в заголовочном файле
<string.h>
|
||
|
int
strcoll
(
const
char
*
lhs,
const
char
*
rhs
)
;
|
||
Сравнивает две строки байтов, завершающиеся нулевым символом, в соответствии с текущей локалью, определённой категорией LC_COLLATE .
Содержание |
Параметры
| lhs, rhs | - | указатели на сравниваемые нуль-терминированные байтовые строки |
Возвращаемое значение
- Отрицательное значение, если lhs меньше (предшествует) rhs .
- 0 если lhs равен rhs .
- Положительное значение, если lhs больше (следует за) rhs .
Примечания
Порядок сортировки соответствует словарному порядку: позиция буквы в национальном алфавите (её класс эквивалентности ) имеет более высокий приоритет, чем её регистр или вариант. В пределах класса эквивалентности строчные символы сортируются перед их прописными эквивалентами, а для символов с диакритическими знаками может применяться зависящий от локали порядок. В некоторых локалях группы символов сравниваются как единые элементы сортировки . Например, "ch" в чешском языке следует после "h" и предшествует "i" , а "dzs" в венгерском языке следует после "dz" и предшествует "g" .
Пример
#include <locale.h> #include <stdio.h> #include <string.h> int main(void) { setlocale(LC_COLLATE, "cs_CZ.utf8"); // Альтернативно, ISO-8859-2 (также известный как Latin-2) // может также работать на некоторых ОС: // setlocale(LC_COLLATE, "cs_CZ.iso88592"); const char* s1 = "hrnec"; const char* s2 = "chrt"; printf("In the Czech locale: "); if (strcoll(s1, s2) < 0) printf("%s before %s\n", s1, s2); else printf("%s before %s\n", s2, s1); printf("In lexicographical comparison: "); if (strcmp(s1, s2) < 0) printf("%s before %s\n", s1, s2); else printf("%s before %s\n", s2, s1); }
Вывод:
In the Czech locale: hrnec before chrt In lexicographical comparison: chrt before hrnec
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.24.4.3 Функция strcoll (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.24.4.3 Функция strcoll (стр.: TBD)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.24.4.3 Функция strcoll (стр. 366)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.21.4.3 Функция strcoll (стр. 329)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
-
- 4.11.4.3 Функция strcoll
Смотрите также
|
(C95)
|
сравнивает две широкие строки в соответствии с текущей локалью
(функция) |
|
преобразует строку так, чтобы strcmp давал тот же результат, что и strcoll
(функция) |
|
|
(C95)
|
преобразует широкую строку так, чтобы
wcscmp
давал тот же результат, что и
wcscoll
(функция) |
|
сравнивает две строки
(функция) |
|
|
Документация C++
для
strcoll
|
|