Namespaces
Variants

wcsncmp

From cppreference.net
< c ‎ | string ‎ | wide
Определено в заголовочном файле <wchar.h>
int wcsncmp ( const wchar_t * lhs, const wchar_t * rhs, size_t count ) ;
(начиная с C95)

Сравнивает не более count широких символов двух широких строк с нулевым завершением. Сравнение выполняется лексикографически.

Знак результата — это знак разности между значениями первой пары широких символов, которые различаются в сравниваемых строках.

Поведение не определено, если lhs или rhs не являются указателями на строки с нулевым завершением.

Содержание

Параметры

lhs, rhs - указатели на сравниваемые широкие строки с нулевым завершением
count - максимальное количество символов для сравнения

Возвращаемое значение

Отрицательное значение, если lhs появляется перед rhs в лексикографическом порядке.

Ноль, если lhs и rhs сравниваются как равные.

Положительное значение, если lhs следует после rhs в лексикографическом порядке.

Примечания

Эта функция не зависит от локали, в отличие от wcscoll и wcsxfrm .

Пример

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
void demo(const wchar_t *lhs, const wchar_t *rhs, int sz)
{
    int rc = wcsncmp(lhs, rhs, sz);
    if(rc == 0)
        printf("First %d characters of [%ls] equal [%ls]\n", sz, lhs, rhs);
    else if(rc < 0)
        printf("First %d characters of [%ls] precede [%ls]\n", sz, lhs, rhs);
    else if(rc > 0)
        printf("First %d characters of [%ls] follow [%ls]\n", sz, lhs, rhs);
}
int main(void)
{
    const wchar_t *str1 = L"안녕하세요";
    const wchar_t *str2 = L"안녕히 가십시오";
    setlocale(LC_ALL, "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 [안녕히 가십시오]

Ссылки

  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.29.4.4.3 Функция wcsncmp (стр. 434)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.24.4.4.3 Функция wcsncmp (стр. 380)

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

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