Spec-Zone.ru › C++

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);
}

См. также

compare
сравнивает две строки
(открытая функция-член std::basic_string<CharT,Traits,Allocator>)
operator==operator!=operator<operator>operator<=operator>=operator<=>
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API