命名空间
变体
操作

operator==,!=,<,<=,>,>=,<=>(std::sub_match)

来自 cppreference.com
< cpp‎ | regex‎ | sub match
定义在头文件 <regex>
直接比较
template< class BidirIt >

bool operator==( const std::sub_match<BidirIt>& lhs,

                 const std::sub_match<BidirIt>& rhs );
(1) (自 C++11)
template< class BidirIt >

bool operator!=( const std::sub_match<BidirIt>& lhs,

                 const std::sub_match<BidirIt>& rhs );
(2) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator<( const std::sub_match<BidirIt>& lhs,

                const std::sub_match<BidirIt>& rhs );
(3) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator<=( const std::sub_match<BidirIt>& lhs,

                 const std::sub_match<BidirIt>& rhs );
(4) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator>( const std::sub_match<BidirIt>& lhs,

                const std::sub_match<BidirIt>& rhs );
(5) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator>=( const std::sub_match<BidirIt>& lhs,

                 const std::sub_match<BidirIt>& rhs );
(6) (自 C++11)
(直到 C++20)
template< class BidirIt >

/*comp-cat*/ operator<=>( const std::sub_match<BidirIt>& lhs,

                          const std::sub_match<BidirIt>& rhs );
(7) (自 C++20)
std::sub_matchstd::basic_string
template< class BidirIt, class Traits, class Alloc >

bool operator==( const std::sub_match<BidirIt>& sm,
                 const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,

                     Traits,Alloc>& rhs );
(8) (自 C++11)
template< class BidirIt, class Traits, class Alloc >

bool operator!=( const std::sub_match<BidirIt>& sm,
                 const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,

                     Traits,Alloc>& st );
(9) (自 C++11)
(直到 C++20)
template< class BidirIt, class Traits, class Alloc >

bool operator<( const std::sub_match<BidirIt>& sm,
                const std::basic_string<
                    typename std::iterator_traits<BidirIt>::value_type,

                    Traits,Alloc>& st );
(10) (自 C++11)
(直到 C++20)
template< class BidirIt, class Traits, class Alloc >

bool operator<=( const std::sub_match<BidirIt>& sm,
                 const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,

                     Traits,Alloc>& st );
(11) (自 C++11)
(直到 C++20)
template< class BidirIt, class Traits, class Alloc >

bool operator>( const std::sub_match<BidirIt>& sm,
                const std::basic_string<
                    typename std::iterator_traits<BidirIt>::value_type,

                    Traits,Alloc>& st );
(12) (自 C++11)
(直到 C++20)
template< class BidirIt, class Traits, class Alloc >

bool operator>=( const std::sub_match<BidirIt>& sm,
                 const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,

                     Traits,Alloc>& st );
(13) (自 C++11)
(直到 C++20)
template< class BidirIt, class Traits, class Alloc >

/*comp-cat*/ operator<=>( const std::sub_match<BidirIt>& sm,
                          const std::basic_string<
                              typename std::iterator_traits<BidirIt>::value_type,

                              Traits,Alloc>& st );
(14) (自 C++20)
std::basic_stringstd::sub_match
template< class BidirIt, class Traits, class Alloc >

bool operator==( const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,
                     Traits,Alloc>& st,

                 const std::sub_match<BidirIt>& sm );
(15) (自 C++11)
(直到 C++20)
template< class BidirIt, class Traits, class Alloc >

bool operator!=( const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,
                     Traits,Alloc>& st,

                 const std::sub_match<BidirIt>& sm );
(16) (自 C++11)
(直到 C++20)
template< class BidirIt, class Traits, class Alloc >

bool operator<( const std::basic_string<
                    typename std::iterator_traits<BidirIt>::value_type,
                    Traits,Alloc>& st,

                const std::sub_match<BidirIt>& sm );
(17) (自 C++11)
(直到 C++20)
template< class BidirIt, class Traits, class Alloc >

bool operator<=( const std::basic_string<
                    typename std::iterator_traits<BidirIt>::value_type,
                    Traits,Alloc>& st,

                const std::sub_match<BidirIt>& sm );
(18) (自 C++11)
(直到 C++20)
template< class BidirIt, class Traits, class Alloc >

bool operator>( const std::basic_string<
                    typename std::iterator_traits<BidirIt>::value_type,
                    Traits,Alloc>& st,

                const std::sub_match<BidirIt>& sm );
(19) (自 C++11)
(直到 C++20)
template< class BidirIt, class Traits, class Alloc >

bool operator>=( const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,
                     Traits,Alloc>& st,

                 const std::sub_match<BidirIt>& sm );
(20) (自 C++11)
(直到 C++20)
std::sub_matchstd::iterator_traits<BidirIt>::value_type*
template< class BidirIt >

bool operator==( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type* s );
(21) (自 C++11)
template< class BidirIt >

bool operator!=( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type* s );
(22) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator<( const std::sub_match<BidirIt>& sm,

                const typename std::iterator_traits<BidirIt>::value_type* s );
(23) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator<=( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type* s );
(24) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator>( const std::sub_match<BidirIt>& sm,

                const typename std::iterator_traits<BidirIt>::value_type* s );
(25) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator>=( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type* s );
(26) (自 C++11)
(直到 C++20)
template< class BidirIt >

/*comp-cat*/ operator<=>( const std::sub_match<BidirIt>& sm,

                          const typename std::iterator_traits<BidirIt>::value_type* s );
(27) (自 C++20)
std::iterator_traits<BidirIt>::value_type*std::sub_match
template< class BidirIt >

bool operator==( const typename std::iterator_traits<BidirIt>::value_type* s,

                 const std::sub_match<BidirIt>& sm );
(28) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator!=( const typename std::iterator_traits<BidirIt>::value_type* s,

                 const std::sub_match<BidirIt>& sm );
(29) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator<( const typename std::iterator_traits<BidirIt>::value_type* s,

                const std::sub_match<BidirIt>& sm );
(30) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator<=( const typename std::iterator_traits<BidirIt>::value_type* s,

                 const std::sub_match<BidirIt>& sm );
(31) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator>( const typename std::iterator_traits<BidirIt>::value_type* s,

                const std::sub_match<BidirIt>& sm );
(32) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator>=( const typename std::iterator_traits<BidirIt>::value_type* s,

                 const std::sub_match<BidirIt>& sm );
(33) (自 C++11)
(直到 C++20)
std::sub_matchstd::iterator_traits<BidirIt>::value_type
template< class BidirIt >

bool operator==( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type& ch );
(34) (自 C++11)
template< class BidirIt >

bool operator!=( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type& ch );
(35) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator<( const std::sub_match<BidirIt>& sm,

                const typename std::iterator_traits<BidirIt>::value_type& ch );
(36) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator<=( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type& ch );
(37) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator>( const std::sub_match<BidirIt>& sm,

                const typename std::iterator_traits<BidirIt>::value_type& ch );
(38) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator>=( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type& ch );
(39) (自 C++11)
(直到 C++20)
template< class BidirIt >

/*comp-cat*/ operator<=>( const std::sub_match<BidirIt>& sm,

                          const typename std::iterator_traits<BidirIt>::value_type& ch );
(40) (自 C++20)
std::iterator_traits<BidirIt>::value_typestd::sub_match
template< class BidirIt >

bool operator==( const typename std::iterator_traits<BidirIt>::value_type& ch,

                 const std::sub_match<BidirIt>& sm );
(41) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator!=( const typename std::iterator_traits<BidirIt>::value_type& ch,

                 const std::sub_match<BidirIt>& sm );
(42) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator<( const typename std::iterator_traits<BidirIt>::value_type& ch,

                const std::sub_match<BidirIt>& sm );
(43) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator<=( const typename std::iterator_traits<BidirIt>::value_type& ch,

                 const std::sub_match<BidirIt>& sm );
(44) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator>( const typename std::iterator_traits<BidirIt>::value_type& ch,

                const std::sub_match<BidirIt>& sm );
(45) (自 C++11)
(直到 C++20)
template< class BidirIt >

bool operator>=( const typename std::iterator_traits<BidirIt>::value_type& ch,

                 const std::sub_match<BidirIt>& sm );
(46) (自 C++11)
(直到 C++20)

比较 sub_match 与另一个 sub_match、字符串、以 null 结尾的字符序列或字符。

1-7) 通过比较其底层字符序列直接比较两个 sub_match。实现方式类似于 lhs.compare(rhs)
8-20) 比较 sub_matchstd::basic_string。实现方式类似于 sm.compare(typename sub_match<BidirIt>::string_type(st.data(), st.size()).
21-33) 比较 sub_match 与以 null 结尾的字符串。实现方式类似于 sm.compare(s)
34-46) 比较 sub_match 与字符。实现方式类似于 sm.compare(typename sub_match<BidirIt>::string_type(1, ch))

三元比较运算符(/*comp-cat*/)的返回类型是 std::compare_three_way_result_t<typename std::sub_match<BidirIt>::string_type>>,即 std::char_traits<typename std::iterator_traits<BidirIt>::value_type>::comparison_category(如果此限定标识符有效并表示类型),否则为 std::weak_ordering。如果 /*comp-cat*/ 不是比较类别类型,则程序格式错误。

<<=>>=!= 运算符分别从 operator<=>operator== 合成。

(自 C++20)

内容

[编辑] 参数

lhs, rhs, sm - 要比较的 sub_match
st - 要比较的 basic_string
s - 要比较的以 null 结尾的字符串指针
ch - 要比较的字符

[编辑] 返回值

对于 operator==(自 C++20 起)true 如果相应的比较根据 std::sub_match::compare() 成立,否则为 false

对于 operator<=>static_cast</*comp-cat*/>(/*comp-res*/ <=> 0),其中 /*comp-res*/ 是上面描述的 std::sub_match::compare() 的结果。

(自 C++20)

[编辑] 注释

如果 BidirIt 的值类型为 charwchar_tchar8_t, char16_tchar32_t,则 operator<=> 的返回类型为 std::strong_ordering

(自 C++20)

[编辑] 示例

[编辑] 缺陷报告

以下更改行为的缺陷报告已追溯应用于以前发布的 C++ 标准。

DR 应用于 发布的行为 正确的行为
LWG 3432 C++20 operator<=> 的返回类型不需要是比较类别类型 需要

[编辑] 另请参阅

比较匹配的子序列(如果有)
(公共成员函数) [编辑]