Spec-Zone.ru › C

wcsncmp

Определено в заголовочном файле <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)

См. также

wcscmp
(C95)
сравнивает две широкие строки
(функция)
wmemcmp
(C95)
сравнивает определенное количество широких символов из двух массивов
(функция)
wcscoll
(C95)
сравнивает две широкие строки в соответствии с текущей локалью
(функция)
Документация C++ для wcsncmp

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

Spec-Zone.ru

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