Namespaces
Variants

std::basic_string_view<CharT,Traits>:: compare

From cppreference.net
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)
лексикографически сравнивает два string view
(шаблон функции)