std::strncmp
Определено в заголовке <cstring> | ||
|---|---|---|
int strncmp( const char* lhs, const char* rhs, std::size_t count ); |
Сравнивает не более count символов двух, возможно, null-терминированных массивов. Сравнение выполняется лексикографически. Символы, следующие за символом null, не сравниваются.
Знак результата — это знак разницы между значениями первой пары символов (обе интерпретируются как unsigned char), которые отличаются в сравниваемых массивах.
Поведение является неопределённым при доступе за пределы любого массива lhs или rhs. Поведение является неопределённым, когда любой из lhs или rhs является указателем null.
Параметры
| lhs, rhs | - | указатели на, возможно, null-терминированные массивы для сравнения |
| 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!]
См. также
| сравнивает две строки (функция) |
|
| сравнивает определенное количество символов из двух широких строк (функция) |
|
| сравнивает два буфера (функция) |
|
| сравнивает две строки в соответствии с текущей локалью (функция) |
|
Документация на C для strncmp |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/byte/strncmp