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 << " compares equal to ";
else if (rc < 0)
std::wcout << " precedes ";
else if (rc > 0)
std::wcout << " follows ";
std::wcout << std::wstring(rhs, sz) << " in lexicographical order\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);
}Возможный вывод:
αβγ precedes αβδ in lexicographical order αβδ follows αβγ in lexicographical order αβγ compares equal to αβγ in lexicographical order
См. также
| сравнивает две широкие строки (функция) |
|
| сравнивает два буфера (функция) |
|
| сравнивает определенное количество символов из двух широких строк (функция) |
|
Документация C для wmemcmp |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/wide/wmemcmp