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) | (自 C++11 起为 noexcept) (自 C++20 起为 constexpr) |
template< class CharT, class Traits, class Alloc > bool operator!=( const std::basic_string<CharT,Traits,Alloc>& lhs, |
(2) | (直到 C++20) (自 C++11 起为 noexcept) |
template< class CharT, class Traits, class Alloc > bool operator<( const std::basic_string<CharT,Traits,Alloc>& lhs, |
(3) | (直到 C++20) (自 C++11 起为 noexcept) |
template< class CharT, class Traits, class Alloc > bool operator<=( const std::basic_string<CharT,Traits,Alloc>& lhs, |
(4) | (直到 C++20) (自 C++11 起为 noexcept) |
template< class CharT, class Traits, class Alloc > bool operator>( const std::basic_string<CharT,Traits,Alloc>& lhs, |
(5) | (直到 C++20) (自 C++11 起为 noexcept) |
template< class CharT, class Traits, class Alloc > bool operator>=( const std::basic_string<CharT,Traits,Alloc>& lhs, |
(6) | (直到 C++20) (自 C++11 起为 noexcept) |
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) | (自 C++20 起为 constexpr) |
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
对象和以空字符结尾的 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 类型,则 |
(自 C++20 起) |
[编辑] 示例
此部分内容尚未完善。 原因:没有示例。 |
[编辑] 缺陷报告
以下行为变更的缺陷报告被追溯应用于之前发布的 C++ 标准。
DR | 应用于 | 已发布的行为 | 正确的行为 |
---|---|---|---|
LWG 2064 | C++11 | 是否接受两个 basic_string 的重载是 noexcept 不一致;接受 CharT* 的重载是 noexcept,但可能引发 UB |
已修正为一致; 删除了 noexcept |
LWG 3432 | C++20 | operator<=> 的返回类型不需要是比较类别类型 |
需要 |