operator==,!=,<,<=,>,>=,<=> (std::basic_string)
|
Определено в заголовке
<string>
|
||
|
Сравнить два объекта
basic_string
|
||
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
==
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(1) |
(noexcept начиная с C++11)
(constexpr начиная с C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
!
=
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(2) |
(до C++20)
(noexcept начиная с C++11) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
<
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(3) |
(до C++20)
(noexcept начиная с C++11) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
<=
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(4) |
(до C++20)
(noexcept начиная с C++11) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
>
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(5) |
(до C++20)
(noexcept начиная с C++11) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
>=
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(6) |
(до C++20)
(noexcept начиная с C++11) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
constexpr
/*comp-cat*/
|
(7) | (начиная с C++20) |
|
Сравнение объекта
basic_string
и нуль-терминированного массива
T
|
||
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
==
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(8) | (constexpr начиная с C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
==
(
const
CharT
*
lhs,
|
(9) | (до C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
!
=
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(10) | (до C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
!
=
(
const
CharT
*
lhs,
|
(11) | (до C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
<
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(12) | (до C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
<
(
const
CharT
*
lhs,
|
(13) | (до C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
<=
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(14) | (до C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
<=
(
const
CharT
*
lhs,
|
(15) | (до C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
>
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(16) | (до C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
>
(
const
CharT
*
lhs,
|
(17) | (до C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
>=
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(18) | (до C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
>=
(
const
CharT
*
lhs,
|
(19) | (до C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
constexpr
/*comp-cat*/
|
(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
и null-terminated массив
CharT
.
|
Тип возврата операторов трёхстороннего сравнения ( /*comp-cat*/ ) является Traits :: comparison_category , если этот квалифицированный идентификатор существует и обозначает тип, std::weak_ordering в противном случае. Если /*comp-cat*/ не является типом категории сравнения, программа некорректна.
Операторы
|
(начиная с 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<=>
не требовался быть типом категории сравнения
|
требуется |