Namespaces
Variants

std:: wmemcmp

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

Сравнивает первые count широких символов массивов широких символов, на которые указывают lhs и rhs . Сравнение выполняется лексикографически.

Знак результата определяется знаком разности между значениями первой пары широких символов, которые различаются в сравниваемых массивах.

Если count равен нулю, функция ничего не делает.

Содержание

Параметры

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

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

Отрицательное значение, если значение первого отличающегося широкого символа в lhs меньше значения соответствующего широкого символа в rhs : lhs предшествует rhs в лексикографическом порядке.

0 если все count широких символов lhs и rhs равны.

Положительное значение, если значение первого отличающегося широкого символа в lhs больше значения соответствующего широкого символа в rhs : rhs предшествует lhs в лексикографическом порядке.

Примечания

Эта функция не зависит от локали и не обращает внимания на значения объектов wchar_t которые она проверяет: нулевые символы, а также недопустимые широкие символы также сравниваются.

Пример

#include <clocale>
#include <cwchar>
#include <iostream>
#include <locale>
#include <string>
void demo(const wchar_t* lhs, const wchar_t* rhs, std::size_t sz)
{
    std::wcout << std::wstring(lhs, sz);
    int rc = std::wmemcmp(lhs, rhs, sz);
    if (rc == 0)
        std::wcout << " compares equal to ";
    else if (rc < 0)
        std::wcout << " precedes ";
    else if (rc > 0)
        std::wcout << " follows ";
    std::wcout << std::wstring(rhs, sz) << " in lexicographical order\n";
}
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    std::wcout.imbue(std::locale("en_US.utf8"));
    wchar_t a1[] = {L'α',L'β',L'γ'};
    constexpr std::size_t sz = sizeof a1 / sizeof *a1;
    wchar_t a2[sz] = {L'α',L'β',L'δ'};
    demo(a1, a2, sz);
    demo(a2, a1, sz);
    demo(a1, a1, sz);
}

Возможный вывод:

αβγ precedes αβδ in lexicographical order
αβδ follows αβγ in lexicographical order
αβγ compares equal to αβγ in lexicographical order

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

сравнивает две широкие строки
(функция)
сравнивает два буфера
(функция)
сравнивает определённое количество символов из двух широких строк
(функция)
C documentation для wmemcmp