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

std::strncmp

Материал из cppreference.com
< cpp‎ | string‎ | byte
 
 
 
Однобайтовые строки с завершающим нулём
Функции
Манипуляции с символами
Преобразование в числовые форматы
(C++11)(C++11)
(C++11)(C++11)
Манипуляции со строками
Проверка строки
Манипуляции с памятью
Разное
 
Определено в заголовочном файле <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 << "Первые " << sz << " символов ["
                  << lhs << "] предшествуют [" << rhs << "]\n";
    else if (rc > 0)
        std::cout << "Первые " << sz << " символов ["
                  << lhs << "] следуют за [" << rhs << "]\n";
    else
        std::cout << "Первые " << sz << " символов ["
                  << lhs << "] равны [" << 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);
}

Вывод:

Первые 13 символов [Hello, world!] следуют за [Hello, everybody!]
Первые 13 символов [Hello, everybody!] предшествуют [Hello, world!]
Первые 7 символов [Hello, everybody!] равны [Hello, world!]
Первые 5 символов [body!] равны [body!]

[править] Смотрите также

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