Пространства имён
Варианты
Действия

std::wcscoll

Материал из cppreference.com
 
 
 
Широкие строки с завершающим нулём
Функции
Операции с символами
Преобразования в числовые форматы
(C++11)(C++11)
(C++11)(C++11)
Операции со строками
Операции с массивами
 
<tbody> </tbody>
Определено в заголовочном файле <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 << L" перед " << p2 << '\n';
    else
        std::wcout << p2 << L" перед " << p1 << '\n';
}

int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    std::wcout << L"В американской локали: ";
    try_compare(L"hrnec", L"chrt");

    std::setlocale(LC_COLLATE, "cs_CZ.utf8");
    std::wcout << L"В чешской локали: ";
    try_compare(L"hrnec", L"chrt");

    std::setlocale(LC_COLLATE, "en_US.utf8");
    std::wcout << L"В американской локали: ";
    try_compare(L"år", L"ängel");

    std::setlocale(LC_COLLATE, "sv_SE.utf8");
    std::wcout << L"В шведской локали: ";
    try_compare(L"år", L"ängel");
}

Вывод:

В американской локали: chrt before hrnec
В чешской локали: hrnec before chrt
В американской локали: ängel before år
В шведской локали: år before ängel

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

сравнивает две строки в соответствии с текущей локалью
(функция) [править]
[virtual]
сравнение двух строк с использованием сортировки эту грань правилами
Оригинал:
compares two strings using this facet's collation rules
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

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