std::wcsncmp — cppreference.com
Материал из cppreference.com
<tbody> </tbody>
| Определено в заголовочном файле |
||
|
|
||
Сравнивает не более count широких символов в двух широких строках с нулевым завершающим символом. Сравнение производится лексикографически.
Знаком результата является знак разности значений первой пары широких символов, различающихся в сравниваемых строках.
Поведение не определено, если lhs или rhs не являются указателями на строки с нулевым завершающим символом.
Параметры
| lhs, rhs | — | указатели на широкие строки с нулевым завершающим символом для сравнения |
| count | — | максимальное количество символов для сравнения |
Возвращаемое значение
Отрицательное значение, если lhs находится перед rhs в лексикографическом порядке.
Ноль, если lhs и rhs равны.
Положительное значение, если lhs находится после rhs в лексикографическом порядке.
Пример
#include <clocale> #include <cwchar> #include <iostream> #include <locale> void demo(const wchar_t* lhs, const wchar_t* rhs, int sz) { int rc = std::wcsncmp(lhs, rhs, sz); if (rc == 0) std::wcout << L"Первые " << sz << L" символов [" << lhs << L"] равны [" << rhs << "]\n"; else if (rc < 0) std::wcout << L"Первые " << sz << L" символов [" << lhs << L"] предшествуют [" << rhs << "]\n"; else if (rc > 0) std::wcout << L"Первые " << sz << L" символов [" << lhs << L"] следуют за [" << rhs << "]\n"; } int main() { const wchar_t str1[] = L"안녕하세요"; const wchar_t str2[] = L"안녕히 가십시오"; std::setlocale(LC_ALL, "en_US.utf8"); std::wcout.imbue(std::locale("en_US.utf8")); demo(str1, str2, 5); demo(str2, str1, 8); demo(str1, str2, 2); }
Вывод:
Первые 5 символов [안녕하세요] предшествуют [안녕히 가십시오] Первые 8 символов [안녕히 가십시오] следуют за [안녕하세요] Первые 2 символов [안녕하세요] равны [안녕히 가십시오]