Spec-Zone.ru › C++

std::wcscoll

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

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

Параметры

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

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

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

Нулевое значение, если 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

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/wide/wcscoll

Spec-Zone.ru

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