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
|