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

std::wmemcmp

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

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

αβγ предшествует αβδ в лексикографическом порядке
αβδ следует за αβγ в лексикографическом порядке
αβγ равна αβγ в лексикографическом порядке

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

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