◐ Shell
clean mode source ↗

std::strcoll — cppreference.com

Материал из cppreference.com

<tbody> </tbody>

Определено в заголовочном файле <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");
    // Альтернативно, ISO-8859-2 (также известная как Latin-2)
    // также может работать на некоторых ОС:
    // std::setlocale(LC_COLLATE, "cs_CZ.iso88592");
    
    const char* s1 = "hrnec";
    const char* s2 = "chrt";
    
    std::cout << "В чешской локали: ";
    if (std::strcoll(s1, s2) < 0)
        std::cout << s1 << " перед " << s2 << '\n';
    else
        std::cout << s2 << " перед " << s1 << '\n';

    std::cout << "В лексикографическом сравнении: ";
    if (std::strcmp(s1, s2) < 0)
        std::cout << s1 << " перед " << s2 << '\n';
    else
        std::cout << s2 << " перед " << s1 << '\n';
}

Вывод:

В чешской локали: hrnec перед chrt
В лексикографическом сравнении: chrt перед hrnec

Смотрите также

сравнивает две широких строки в соответствии с текущей локалью
(функция) [править]

сравнение двух строк с использованием сортировки эту грань правилами

Оригинал:

compares two strings using this facet's collation rules

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.


(virtual protected std::collate функция-элемент) [править]
преобразовывает строку так, чтобы strcmp давала тот же результат, что и strcoll
(функция) [править]