Namespaces
Variants

std:: strcoll

From cppreference.net
Определено в заголовке <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
(функция)