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/w/cpp/string/wide/wmemcmp

Spec-Zone.ru

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