Spec-Zone.ru › C++

std::strncmp

Определена в заголовочном файле <cstring>
int strncmp( const char* lhs, const char* rhs, std::size_t count );

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

Знак результата совпадает со знаком разности значений первой пары символов (оба интерпретируются как unsigned char), которые различаются в сравниваемых массивах.

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

Параметры

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

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

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

Ноль, если lhs и rhs равны при сравнении или если count равно нулю.

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

Примечания

Эта функция не учитывает локаль, в отличие от std::strcoll и std::strxfrm.

Пример

#include <cstring>
#include <iostream>

void demo(const char* lhs, const char* rhs, int sz)
{
    const int rc = std::strncmp(lhs, rhs, sz);
    if (rc < 0)
        std::cout << "First " << sz << " chars of ["
                  << lhs << "] precede [" << rhs << "]\n";
    else if (rc > 0)
        std::cout << "First " << sz << " chars of ["
                  << lhs << "] follow [" << rhs << "]\n";
    else
        std::cout << "First " << sz << " chars of ["
                  << lhs << "] equal [" << rhs << "]\n";
}

int main()
{
    demo("Hello, world!", "Hello, everybody!", 13);
    demo("Hello, everybody!", "Hello, world!", 13);
    demo("Hello, everybody!", "Hello, world!", 7);
    demo("Hello, everybody!" + 12, "Hello, somebody!" + 11, 5);
}

Вывод:

First 13 chars of [Hello, world!] follow [Hello, everybody!]
First 13 chars of [Hello, everybody!] precede [Hello, world!]
First 7 chars of [Hello, everybody!] equal [Hello, world!]
First 5 chars of [body!] equal [body!]

См. также

strcmp
сравнивает две строки
(функция)
wcsncmp
сравнивает заданное количество символов двух широких строк
(функция)
memcmp
сравнивает два буфера
(функция)
strcoll
сравнивает две строки в соответствии с текущей локалью
(функция)
Документация по C для strncmp

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

Spec-Zone.ru

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