Namespaces
Variants

std:: wcscoll

From cppreference.net
Определено в заголовке <cwchar>
int wcscoll ( const wchar_t * lhs, const wchar_t * rhs ) ;

Сравнивает две широкие строки с нулевым завершением в соответствии с локалью, последний раз установленной с помощью std::setlocale , как определено категорией LC_COLLATE .

Содержание

Параметры

lhs, rhs - указатели на сравниваемые широкие строки с нулевым завершением

Возвращаемое значение

Отрицательное значение, если lhs меньше (предшествует) rhs .

0 если lhs равен rhs .

Положительное значение, если lhs больше (следует после) rhs .

Примечания

Порядок сортировки — это словарный порядок: позиция буквы в национальном алфавите (её класс эквивалентности ) имеет более высокий приоритет, чем её регистр или вариант. В пределах класса эквивалентности строчные символы сортируются перед их прописными эквивалентами, а локально-зависимый порядок может применяться к символам с диакритическими знаками. В некоторых локализациях группы символов сравниваются как единые элементы сортировки . Например, "ch" в чешском языке следует после "h" и предшествует "i" , а "dzs" в венгерском языке следует после "dz" и предшествует "g" .

Пример

#include <clocale>
#include <iostream>
void try_compare(const wchar_t* p1, const wchar_t* p2)
{
    if (std::wcscoll(p1, p2) < 0)
        std::wcout << p1 << " before " << p2 << '\n';
    else
        std::wcout << p2 << " before " << p1 << '\n';
}
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    std::wcout << "In the American locale: ";
    try_compare(L"hrnec", L"chrt");
    std::setlocale(LC_COLLATE, "cs_CZ.utf8");
    std::wcout << "In the Czech locale: ";
    try_compare(L"hrnec", L"chrt");
    std::setlocale(LC_COLLATE, "en_US.utf8");
    std::wcout << "In the American locale: ";
    try_compare(L"år", L"ängel");
    std::setlocale(LC_COLLATE, "sv_SE.utf8");
    std::wcout << "In the Swedish locale: ";
    try_compare(L"år", L"ängel");
}

Вывод:

In the American locale: chrt before hrnec
In the Czech locale: hrnec before chrt
In the American locale: ängel before år
In the Swedish locale: år before ängel

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

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