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 << 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);
}
Возможный вывод:
αβγ предшествует αβδ в лексикографическом порядке
αβδ следует за αβγ в лексикографическом порядке
αβγ равна αβγ в лексикографическом порядке
Смотрите также
| сравнивает две широкие строки (функция) | |
| сравнивает два буфера (функция) | |
| сравнивает определённое количество символов из двух широких строк (функция) | |
Документация C по wmemcmp
| |