std:: strcoll
|
Определено в заголовке
<cstring>
|
||
|
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 <clocale> #include <cstring> #include <iostream> int main() { std::setlocale(LC_COLLATE, "cs_CZ.utf8"); // Alternatively, ISO-8859-2 (a.k.a. Latin-2) // may also work on some OS: // std::setlocale(LC_COLLATE, "cs_CZ.iso88592"); const char* s1 = "hrnec"; const char* s2 = "chrt"; std::cout << "In the Czech locale: "; if (std::strcoll(s1, s2) < 0) std::cout << s1 << " before " << s2 << '\n'; else std::cout << s2 << " before " << s1 << '\n'; std::cout << "In lexicographical comparison: "; if (std::strcmp(s1, s2) < 0) std::cout << s1 << " before " << s2 << '\n'; else std::cout << s2 << " before " << s1 << '\n'; }
Вывод:
In the Czech locale: hrnec before chrt In lexicographical comparison: chrt before hrnec
Смотрите также
|
сравнивает две широкие строки в соответствии с текущей локалью
(функция) |
|
|
[virtual]
|
сравнивает две строки, используя правила сортировки этого аспекта
(виртуальная защищенная функция-член
std::collate<CharT>
)
|
преобразует строку так, чтобы
strcmp
выдавал тот же результат, что и
strcoll
(функция) |
|
|
Документация C
для
strcoll
|
|