Namespaces
Variants

wmemcmp

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

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

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

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

Содержание

Параметры

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

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

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

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

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

Примечания

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

Пример

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
void demo(const wchar_t* lhs, const wchar_t* rhs, size_t sz)
{
    for (size_t n = 0; n < sz; ++n)
        putwchar(lhs[n]);
    int rc = wmemcmp(lhs, rhs, sz);
    if (rc == 0)
        wprintf(L" compares equal to ");
    else if(rc < 0)
        wprintf(L" precedes ");
    else if(rc > 0)
        wprintf(L" follows ");
    for (size_t n = 0; n < sz; ++n)
        putwchar(rhs[n]);
    wprintf(L" in lexicographical order\n");
}
int main(void)
{
    setlocale(LC_ALL, "en_US.utf8");
    wchar_t a1[] = {L'α',L'β',L'γ'};
    wchar_t a2[] = {L'α',L'β',L'δ'};
    size_t sz = sizeof a1 / sizeof *a1;
    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

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 7.29.4.4.5 Функция wmemcmp (стр.: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.29.4.4.5 Функция wmemcmp (стр.: TBD)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.29.4.4.5 Функция wmemcmp (стр. 435)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.24.4.4.5 Функция wmemcmp (стр: 381)

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

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