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 << "Первые " << 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!]
Смотрите также
| сравнивает две строки (функция) | |
| сравнивает определённое количество символов из двух широких строк (функция) | |
| сравнивает два буфера (функция) | |
| сравнивает две строки в соответствии с текущей локалью (функция) | |
Документация C по strncmp
| |