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)
См. также
|
(C95) |
сравнивает две широкие строки (функция) |
| сравнивает два буфера (функция) |
|
|
(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