Spec-Zone.ru › C++

std::wmemcmp

Определён в заголовочном файле <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

См. также

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

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

Spec-Zone.ru

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