Spec-Zone.ru › C

wmemcmp

Определено в заголовке <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:2023):
    • 7.29.4.4.5 Функция wmemcmp (p: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
    • 7.29.4.4.5 Функция wmemcmp (p: TBD)
  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.29.4.4.5 Функция wmemcmp (p: 435)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.24.4.4.5 Функция wmemcmp (p: 381)

См. также

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

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

Spec-Zone.ru

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