std::basic_string_view<CharT,Traits>::compare
constexpr int compare( basic_string_view v ) const noexcept; | (1) | (начиная с C++17) |
constexpr int compare( size_type pos1, size_type count1,
basic_string_view v ) const;
| (2) | (начиная с C++17) |
constexpr int compare( size_type pos1, size_type count1, basic_string_view v,
size_type pos2, size_type count2 ) const;
| (3) | (начиная с C++17) |
constexpr int compare( const CharT* s ) const; | (4) | (начиная с C++17) |
constexpr int compare( size_type pos1, size_type count1,
const CharT* s ) const;
| (5) | (начиная с C++17) |
constexpr int compare( size_type pos1, size_type count1,
const CharT* s, size_type count2 ) const;
| (6) | (начиная с C++17) |
Сравнивает две последовательности символов.
1) Длина
rlen сравниваемых последовательностей равна меньшему из значений size() и v.size(). Функция сравнивает два представления, вызывая traits::compare(data(), v.data(), rlen), и возвращает значение согласно следующей таблице:| Условие | Результат | Возвращаемое значение | |
|---|---|---|---|
Traits::compare(data(), v.data(), rlen) < 0 |
this меньше, чем v |
< 0 |
|
Traits::compare(data(), v.data(), rlen) == 0 |
size() < v.size() |
this меньше, чем v |
< 0 |
size() == v.size() |
this равно v |
0 |
|
size() > v.size() |
this больше, чем v |
> 0 |
|
Traits::compare(data(), v.data(), rlen) > 0 |
this больше, чем v |
> 0 |
|
2) Эквивалентно
substr(pos1, count1).compare(v).
3) Эквивалентно
substr(pos1, count1).compare(v.substr(pos2, count2)).
4) Эквивалентно
compare(basic_string_view(s)).
5) Эквивалентно
substr(pos1, count1).compare(basic_string_view(s)).
6) Эквивалентно
substr(pos1, count1).compare(basic_string_view(s, count2)).Параметры
| v | - | представление для сравнения |
| s | - | указатель на строку символов для сравнения |
| count1 | - | количество символов этого представления для сравнения |
| pos1 | - | позиция первого символа этого представления для сравнения |
| count2 | - | количество символов заданного представления для сравнения |
| pos2 | - | позиция первого символа заданного представления для сравнения |
Возвращаемое значение
Отрицательное значение, если это представление меньше другой последовательности символов; ноль, если обе последовательности символов равны; положительное значение, если это представление больше другой последовательности символов.
Сложность
1) Линейная относительно количества сравниваемых символов.
Пример
#include <string_view>
int main()
{
using std::operator""sv;
static_assert("abc"sv.compare("abcd"sv) < 0);
static_assert("abcd"sv.compare("abc"sv) > 0);
static_assert("abc"sv.compare("abc"sv) == 0);
static_assert(""sv.compare(""sv) == 0);
}
См. также
| сравнивает две строки (открытая функция-член std::basic_string<CharT,Traits,Allocator>) |
|
|
(C++17)(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(C++20) | лексикографически сравнивает два строковых представления (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/string/basic_string_view/compare