operator==,!=,<,<=,>,>=,<=>(std::basic_string)
Defined in header <string> | ||
Compare two basic_string objects | ||
template<class CharT, class Traits, class Alloc > bool operator==(conststd::basic_string<CharT,Traits,Alloc>& lhs, | (1) | (noexcept since C++11) (constexpr since C++20) |
template<class CharT, class Traits, class Alloc > bool operator!=(conststd::basic_string<CharT,Traits,Alloc>& lhs, | (2) | (until C++20) (noexcept since C++11) |
template<class CharT, class Traits, class Alloc > bool operator<(conststd::basic_string<CharT,Traits,Alloc>& lhs, | (3) | (until C++20) (noexcept since C++11) |
template<class CharT, class Traits, class Alloc > bool operator<=(conststd::basic_string<CharT,Traits,Alloc>& lhs, | (4) | (until C++20) (noexcept since C++11) |
template<class CharT, class Traits, class Alloc > bool operator>(conststd::basic_string<CharT,Traits,Alloc>& lhs, | (5) | (until C++20) (noexcept since C++11) |
template<class CharT, class Traits, class Alloc > bool operator>=(conststd::basic_string<CharT,Traits,Alloc>& lhs, | (6) | (until C++20) (noexcept since C++11) |
template<class CharT, class Traits, class Alloc > constexpr/*comp-cat*/ | (7) | (since C++20) |
Compare a basic_string object and null-terminated array of T | ||
template<class CharT, class Traits, class Alloc > bool operator==(conststd::basic_string<CharT,Traits,Alloc>& lhs, | (8) | (constexpr since C++20) |
template<class CharT, class Traits, class Alloc > bool operator==(const CharT* lhs, | (9) | (until C++20) |
template<class CharT, class Traits, class Alloc > bool operator!=(conststd::basic_string<CharT,Traits,Alloc>& lhs, | (10) | (until C++20) |
template<class CharT, class Traits, class Alloc > bool operator!=(const CharT* lhs, | (11) | (until C++20) |
template<class CharT, class Traits, class Alloc > bool operator<(conststd::basic_string<CharT,Traits,Alloc>& lhs, | (12) | (until C++20) |
template<class CharT, class Traits, class Alloc > bool operator<(const CharT* lhs, | (13) | (until C++20) |
template<class CharT, class Traits, class Alloc > bool operator<=(conststd::basic_string<CharT,Traits,Alloc>& lhs, | (14) | (until C++20) |
template<class CharT, class Traits, class Alloc > bool operator<=(const CharT* lhs, | (15) | (until C++20) |
template<class CharT, class Traits, class Alloc > bool operator>(conststd::basic_string<CharT,Traits,Alloc>& lhs, | (16) | (until C++20) |
template<class CharT, class Traits, class Alloc > bool operator>(const CharT* lhs, | (17) | (until C++20) |
template<class CharT, class Traits, class Alloc > bool operator>=(conststd::basic_string<CharT,Traits,Alloc>& lhs, | (18) | (until C++20) |
template<class CharT, class Traits, class Alloc > bool operator>=(const CharT* lhs, | (19) | (until C++20) |
template<class CharT, class Traits, class Alloc > constexpr/*comp-cat*/ | (20) | (since C++20) |
Compares the contents of a string with another string or a null-terminated array of CharT
.
All comparisons are done via the compare() member function (which itself is defined in terms of Traits::compare()
):
- Two strings are equal if both the size of lhs and rhs are equal and each character in lhs has equivalent character in rhs at the same position.
- The ordering comparisons are done lexicographically – the comparison is performed by a function equivalent to std::lexicographical_compareor std::lexicographical_compare_three_way(since C++20).
basic_string
objects.basic_string
object and a null-terminated array of CharT
.The return type of three-way comparison operators (/*comp-cat*/) is Traits::comparison_category if that qualified-id exists and denotes a type, std::weak_ordering otherwise. If /*comp-cat*/ is not a comparison category type, the program is ill-formed. The | (since C++20) |
Contents |
[edit]Parameters
lhs, rhs | - | strings whose contents to compare |
[edit]Return value
[edit]Complexity
Linear in the size of the strings.
[edit]Notes
If at least one parameter is of type std::string, std::wstring, std::u8string, std::u16string, or std::u32string, the return type of | (since C++20) |
[edit]Example
This section is incomplete Reason: no example |
[edit]Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 2064 | C++11 | whether overloads taking two basic_string s are noexcept was inconsistent;overloads taking a CharT* were noexcept but might raise UB | made consistent; noexcept removed |
LWG 3432 | C++20 | the return type of operator<=> was not required to be a comparison category type | required |