Spec-Zone.ru › C++

std::wcsncmp

Определено в заголовке <cwchar>
int wcsncmp( const wchar_t* lhs, const wchar_t* rhs, std::size_t count );

Сравнивает не более 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 << "First " << sz << " characters of ["
                   << lhs << "] equal [" << rhs << "]\n";
    else if (rc < 0)
        std::wcout << "First " << sz << " characters of ["
                   << lhs << "] precede [" << rhs << "]\n";
    else if (rc > 0)
        std::wcout << "First " << sz << " characters of ["
                   << lhs << "] follow [" << 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);
}

Вывод:

First 5 characters of [안녕하세요] precede [안녕히 가십시오]
First 8 characters of [안녕히 가십시오] follow [안녕하세요]
First 2 characters of [안녕하세요] equal [안녕히 가십시오]

См. также

strncmp
сравнивает определенное количество символов из двух строк
(функция)
wcscmp
сравнивает две широкие строки
(функция)
wmemcmp
сравнивает определенное количество широких символов из двух массивов
(функция)
wcscoll
сравнивает две широкие строки в соответствии с текущим языковым стандартом
(функция)
C документация для wcsncmp

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

Spec-Zone.ru

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