close
Пространства имён
Варианты
Действия

std::wcsncmp

Материал из cppreference.com
 
 
 
Широкие строки с завершающим нулём
Функции
Операции с символами
Преобразования в числовые форматы
(C++11)(C++11)
(C++11)(C++11)
Операции со строками
Операции с массивами
 
<tbody> </tbody>
Определено в заголовочном файле <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 << 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 символов [안녕하세요] равны [안녕히 가십시오]

Смотрите также

сравнивает определённое количество символов двух строк
(функция) [править]
сравнивает две широкие строки
(функция) [править]
сравнивает определённое количество широких символов из двух массивов
(функция) [править]
сравнивает две широких строки в соответствии с текущей локалью
(функция) [править]