operator==,!=,<,<=,>,>=,<=>(std::basic_string)
| Определён в заголовке <string>
|
||
| Сравнивает два basic_string объекта |
||
template< class CharT, class Traits, class Alloc >
bool operator==( const std::basic_string<CharT,Traits,Alloc>& lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs );
|
(1) | (noexcept начиная с C++11) (constexpr начиная с C++20) |
template< class CharT, class Traits, class Alloc >
bool operator!=( const std::basic_string<CharT,Traits,Alloc>& lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs );
|
(2) | (до C++20) (noexcept начиная с C++11) |
template< class CharT, class Traits, class Alloc >
bool operator<( const std::basic_string<CharT,Traits,Alloc>& lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs );
|
(3) | (до C++20) (noexcept начиная с C++11) |
template< class CharT, class Traits, class Alloc >
bool operator<=( const std::basic_string<CharT,Traits,Alloc>& lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs );
|
(4) | (до C++20) (noexcept начиная с C++11) |
template< class CharT, class Traits, class Alloc >
bool operator>( const std::basic_string<CharT,Traits,Alloc>& lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs );
|
(5) | (до C++20) (noexcept начиная с C++11) |
template< class CharT, class Traits, class Alloc >
bool operator>=( const std::basic_string<CharT,Traits,Alloc>& lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs );
|
(6) | (до C++20) (noexcept начиная с C++11) |
template< class CharT, class Traits, class Alloc >
constexpr /*comp-cat*/
operator<=>( const std::basic_string<CharT,Traits,Alloc>& lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs ) noexcept;
|
(7) | (начиная с C++20) |
| Сравнивает basic_string объект и массив T |
||
template< class CharT, class Traits, class Alloc >
bool operator==( const std::basic_string<CharT,Traits,Alloc>& lhs,
const CharT* rhs );
|
с нулевым завершителем | (8) |
template< class CharT, class Traits, class Alloc >
bool operator==( const CharT* lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs );
|
(constexpr начиная с C++20) | (9) |
template< class CharT, class Traits, class Alloc >
bool operator!=( const std::basic_string<CharT,Traits,Alloc>& lhs,
const CharT* rhs );
|
(до C++20) | (10) |
template< class CharT, class Traits, class Alloc >
bool operator!=( const CharT* lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs );
|
(до C++20) | (11) |
template< class CharT, class Traits, class Alloc >
bool operator<( const std::basic_string<CharT,Traits,Alloc>& lhs,
const CharT* rhs );
|
(до C++20) | (12) |
template< class CharT, class Traits, class Alloc >
bool operator<( const CharT* lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs );
|
(до C++20) | (13) |
template< class CharT, class Traits, class Alloc >
bool operator<=( const std::basic_string<CharT,Traits,Alloc>& lhs,
const CharT* rhs );
|
(до C++20) | (14) |
template< class CharT, class Traits, class Alloc >
bool operator<=( const CharT* lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs );
|
(до C++20) | (15) |
template< class CharT, class Traits, class Alloc >
bool operator>( const std::basic_string<CharT,Traits,Alloc>& lhs,
const CharT* rhs );
|
(до C++20) | (16) |
template< class CharT, class Traits, class Alloc >
bool operator>( const CharT* lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs );
|
(до C++20) | (17) |
template< class CharT, class Traits, class Alloc >
bool operator>=( const std::basic_string<CharT,Traits,Alloc>& lhs,
const CharT* rhs );
|
(до C++20) | (18) |
template< class CharT, class Traits, class Alloc >
bool operator>=( const CharT* lhs,
const std::basic_string<CharT,Traits,Alloc>& rhs );
|
(до C++20) | (19) |
template< class CharT, class Traits, class Alloc >
constexpr /*comp-cat*/
operator<=>( const std::basic_string<CharT,Traits,Alloc>& lhs,
const CharT* rhs );
|
(до C++20) | (20) |
(начиная с C++20)CharTСравнивает содержимое строки с другой строкой или с массивом
с нулевым завершителем.
Все сравнения выполняются через функцию-член compare()Traits::compare() (которая сама определена в терминах
- ):
lhsДве строки равны, если размерыrhsиlhsравны и каждый символ вrhsимеет эквивалентный символ в
- на той же позиции. –Сравнения на порядок выполняются лексикографически: сравнение выполняется функцией, эквивалентной std::lexicographical_compare или std::lexicographical_compare_three_way(начиная с C++20).
basic_string.
basic_string и массив CharT с нулевым завершителем.
|
Возвращаемый тип операторов трёхстороннего сравнения ( Операторы |
(начиная с C++20) |
Параметры
| lhs, rhs | - | строки, содержимое которых необходимо сравнить |
Возвращаемое значение
Сложность
Линейно от размера строк.
Примечания
|
Если хотя бы один параметр имеет тип
std::string
,
std::wstring
,
std::u8string
,
std::u16string
, или
std::u32string
, возвращаемым типом
|
(since C++20) |
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 2064 | C++11 |
было противоречие в том, являются ли noexcept перегрузки, принимающие два
basic_string
;
перегрузки, принимающие
CharT*
были noexcept, но могли вызывать неопределённое поведение
|
сделано согласованным;
noexcept удалён |
| LWG 3432 | C++20 |
тип возвращаемого значения
operator<=>
не требовался быть типом категории сравнения
|
требуется |