Namespaces
Variants

wcscoll

From cppreference.net
< c ‎ | string ‎ | wide
Определено в заголовочном файле <wchar.h>
int wcscoll ( const wchar_t * lhs, const wchar_t * rhs ) ;
(начиная с C95)

Сравнивает две широкие строки с нулевым завершением в соответствии с порядком сортировки, определённым LC_COLLATE категорией текущей установленной локали.

Содержание

Параметры

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

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

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

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

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

Примечания

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

Пример

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
void try_compare(const wchar_t* p1, const wchar_t* p2)
{
    if(wcscoll(p1, p2) < 0)
        printf("%ls before %ls\n", p1, p2);
    else
        printf("%ls before %ls\n", p2, p1);
}
int main(void)
{
    setlocale(LC_ALL, "en_US.utf8");
    printf("In the American locale: ");
    try_compare(L"hrnec", L"chrt");
    setlocale(LC_COLLATE, "cs_CZ.utf8");
    printf("In the Czech locale: ");
    try_compare(L"hrnec", L"chrt");
    setlocale(LC_COLLATE, "en_US.utf8");
    printf("In the American locale: ");
    try_compare(L"år", L"ängel");
    setlocale(LC_COLLATE, "sv_SE.utf8");
    printf("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

Ссылки

  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.29.4.4.2 Функция wcscoll (стр. 433-434)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.24.4.4.2 Функция wcscoll (стр. 379-380)

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

сравнивает две строки в соответствии с текущей локалью
(функция)
(C95)
преобразует широкую строку так, чтобы wcscmp давал тот же результат, что и wcscoll
(функция)
(C95)
сравнивает две широкие строки
(функция)