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 |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/byte/strcoll