Spec-Zone.ru › C++

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

См. также

wcscoll
сравнивает две широкие строки в соответствии с текущей локалью
(функция)
do_compare
[virtual]
сравнивает две строки, используя правила сортировки этого компонента
(виртуальная защищенная функция-член std::collate<CharT>)
strxfrm
преобразует строку таким образом, чтобы 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API