sub_match_operator_cmp
sub_match_operator_cmp (sub_match 비교 연산자)
std::sub_match 객체를 다른 sub_match, std::basic_string, C 스타일 문자열, 또는 단일 문자와 비교하는 비멤버 연산자 함수들을 설명해요. 이 연산자들은 정규 표현식 매칭 결과로 얻은 부분 문자열(sub_match)을 다양한 형태의 문자열 값과 편리하게 비교할 수 있게 해줘요. C++20부터는 operator<=>와 operator==를 기반으로 나머지 비교 연산자가 자동 합성돼요.
출처: cppreference
본문
개요
<regex> 헤더에 정의된 std::sub_match 비교 연산자는 크게 네 가지 대상을 상대로 비교를 수행해요.
- 다른
std::sub_match객체와 직접 비교 std::basic_string객체와 비교- C 스타일 문자열 포인터와 비교
- 단일 문자와 비교
각 연산자는 lhs.compare(target) 또는 rhs.compare(target)의 결과를 사용해 최종 불리언 값 또는 비교 카테고리 값을 반환해요.
연산자 목록
정의된 헤더 <regex> |
||
|---|---|---|
| 직접 비교 | ||
template < class BidirIt > bool operator == ( const std::sub_match<BidirIt>& lhs, const std::sub_match<BidirIt>& rhs ); |
(1) | (since C++11) |
template < class BidirIt > bool operator != ( const std::sub_match<BidirIt>& lhs, const std::sub_match<BidirIt>& rhs ); |
(2) | (since C++11) (until C++20) |
template < class BidirIt > bool operator < ( const std::sub_match<BidirIt>& lhs, const std::sub_match<BidirIt>& rhs ); |
(3) | (since C++11) (until C++20) |
template < class BidirIt > bool operator <= ( const std::sub_match<BidirIt>& lhs, const std::sub_match<BidirIt>& rhs ); |
(4) | (since C++11) (until C++20) |
template < class BidirIt > bool operator > ( const std::sub_match<BidirIt>& lhs, const std::sub_match<BidirIt>& rhs ); |
(5) | (since C++11) (until C++20) |
template < class BidirIt > bool operator >= ( const std::sub_match<BidirIt>& lhs, const std::sub_match<BidirIt>& rhs ); |
(6) | (since C++11) (until C++20) |
template < class BidirIt > auto operator <=> ( const std::sub_match<BidirIt>& lhs, const std::sub_match<BidirIt>& rhs ); |
(7) | (since C++20) |
std::basic_string과 비교 |
||
|---|---|---|
template < class BidirIt, class Traits, class Alloc > bool operator == ( const std::sub_match<BidirIt>& lhs, const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str ); |
(8) | (since C++11) |
template < class BidirIt, class Traits, class Alloc > bool operator != ( const std::sub_match<BidirIt>& lhs, const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str ); |
(9) | (since C++11) (until C++20) |
template < class BidirIt, class Traits, class Alloc > bool operator < ( const std::sub_match<BidirIt>& lhs, const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str ); |
(10) | (since C++11) (until C++20) |
template < class BidirIt, class Traits, class Alloc > bool operator <= ( const std::sub_match<BidirIt>& lhs, const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str ); |
(11) | (since C++11) (until C++20) |
template < class BidirIt, class Traits, class Alloc > bool operator > ( const std::sub_match<BidirIt>& lhs, const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str ); |
(12) | (since C++11) (until C++20) |
template < class BidirIt, class Traits, class Alloc > bool operator >= ( const std::sub_match<BidirIt>& lhs, const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str ); |
(13) | (since C++11) (until C++20) |
template < class BidirIt, class Traits, class Alloc > auto operator <=> ( const std::sub_match<BidirIt>& lhs, const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str ); |
(14) | (since C++20) |
template < class BidirIt, class Traits, class Alloc > bool operator == ( const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str, const std::sub_match<BidirIt>& rhs ); |
(15) | (since C++11) (until C++20) |
template < class BidirIt, class Traits, class Alloc > bool operator != ( const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str, const std::sub_match<BidirIt>& rhs ); |
(16) | (since C++11) (until C++20) |
template < class BidirIt, class Traits, class Alloc > bool operator < ( const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str, const std::sub_match<BidirIt>& rhs ); |
(17) | (since C++11) (until C++20) |
template < class BidirIt, class Traits, class Alloc > bool operator <= ( const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str, const std::sub_match<BidirIt>& rhs ); |
(18) | (since C++11) (until C++20) |
template < class BidirIt, class Traits, class Alloc > bool operator > ( const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str, const std::sub_match<BidirIt>& rhs ); |
(19) | (since C++11) (until C++20) |
template < class BidirIt, class Traits, class Alloc > bool operator >= ( const std::basic_string</*value-type-of*/<BidirIt>, Traits, Alloc>& str, const std::sub_match<BidirIt>& rhs ); |
(20) | (since C++11) (until C++20) |
| C 스타일 문자열과 비교 | ||
|---|---|---|
template < class BidirIt > bool operator == ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>* s ); |
(21) | (since C++11) |
template < class BidirIt > bool operator != ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>* s ); |
(22) | (since C++11) (until C++20) |
template < class BidirIt > bool operator < ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>* s ); |
(23) | (since C++11) (until C++20) |
template < class BidirIt > bool operator <= ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>* s ); |
(24) | (since C++11) (until C++20) |
template < class BidirIt > bool operator > ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>* s ); |
(25) | (since C++11) (until C++20) |
template < class BidirIt > bool operator >= ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>* s ); |
(26) | (since C++11) (until C++20) |
template < class BidirIt > auto operator <=> ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>* s ); |
(27) | (since C++20) |
template < class BidirIt > bool operator == ( const /*value-type-of*/<BidirIt>* s, const std::sub_match<BidirIt>& rhs ); |
(28) | (since C++11) (until C++20) |
template < class BidirIt > bool operator != ( const /*value-type-of*/<BidirIt>* s, const std::sub_match<BidirIt>& rhs ); |
(29) | (since C++11) (until C++20) |
template < class BidirIt > bool operator < ( const /*value-type-of*/<BidirIt>* s, const std::sub_match<BidirIt>& rhs ); |
(30) | (since C++11) (until C++20) |
template < class BidirIt > bool operator <= ( const /*value-type-of*/<BidirIt>* s, const std::sub_match<BidirIt>& rhs ); |
(31) | (since C++11) (until C++20) |
template < class BidirIt > bool operator > ( const /*value-type-of*/<BidirIt>* s, const std::sub_match<BidirIt>& rhs ); |
(32) | (since C++11) (until C++20) |
template < class BidirIt > bool operator >= ( const /*value-type-of*/<BidirIt>* s, const std::sub_match<BidirIt>& rhs ); |
(33) | (since C++11) (until C++20) |
| 단일 문자와 비교 | ||
|---|---|---|
template < class BidirIt > bool operator == ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>& ch ); |
(34) | (since C++11) |
template < class BidirIt > bool operator != ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>& ch ); |
(35) | (since C++11) (until C++20) |
template < class BidirIt > bool operator < ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>& ch ); |
(36) | (since C++11) (until C++20) |
template < class BidirIt > bool operator <= ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>& ch ); |
(37) | (since C++11) (until C++20) |
template < class BidirIt > bool operator > ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>& ch ); |
(38) | (since C++11) (until C++20) |
template < class BidirIt > bool operator >= ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>& ch ); |
(39) | (since C++11) (until C++20) |
template < class BidirIt > auto operator <=> ( const std::sub_match<BidirIt>& lhs, const /*value-type-of*/<BidirIt>& ch ); |
(40) | (since C++20) |
template < class BidirIt > bool operator == ( const /*value-type-of*/<BidirIt>& ch, const std::sub_match<BidirIt>& rhs ); |
(41) | (since C++11) (until C++20) |
template < class BidirIt > bool operator != ( const /*value-type-of*/<BidirIt>& ch, const std::sub_match<BidirIt>& rhs ); |
(42) | (since C++11) (until C++20) |
template < class BidirIt > bool operator < ( const /*value-type-of*/<BidirIt>& ch, const std::sub_match<BidirIt>& rhs ); |
(43) | (since C++11) (until C++20) |
template < class BidirIt > bool operator <= ( const /*value-type-of*/<BidirIt>& ch, const std::sub_match<BidirIt>& rhs ); |
(44) | (since C++11) (until C++20) |
template < class BidirIt > bool operator > ( const /*value-type-of*/<BidirIt>& ch, const std::sub_match<BidirIt>& rhs ); |
(45) | (since C++11) (until C++20) |
template < class BidirIt > bool operator >= ( const /*value-type-of*/<BidirIt>& ch, const std::sub_match<BidirIt>& rhs ); |
(46) | (since C++11) (until C++20) |
| 헬퍼 타입 별칭 | ||
|---|---|---|
template < class BidirIt > using /*value-type-of*/ = typename std::iterator_traits<BidirIt>::value_type; |
(47) | (설명 전용*) |
template < class BidirIt > using /*cat-type-of*/ = std::compare_three_way_result_t<std::basic_string</*value-type-of*/<BidirIt>>>; |
(48) | (since C++20) (설명 전용*) |
sub_match를 다른 sub_match, std::string, C 스타일 문자열 또는 단일 문자와 비교해요.
<,<=,>,>=,!=연산자는 각각operator<=>와operator==로부터 합성돼요. (since C++20)
매개변수
lhs, rhs |
- | 비교할 sub_match |
|---|---|---|
str |
- | 비교할 std::basic_string |
s |
- | 비교할 C 스타일 문자열을 가리키는 포인터 |
ch |
- | 비교할 문자 |
반환값
target은 다음과 같이 정의돼요.
- 오버로드 (1–14, 21–27, 34–40)에서는
lhs가 비교 대상이에요. - 오버로드 (15–20, 28–33, 41–46)에서는
rhs가 비교 대상이에요.
반환값은 다음과 같이 정의돼요.
| 연산자 | 반환값 |
|---|---|
오버로드 (1–14, 21–27, 34–40) — lhs가 왼쪽인 경우 |
|
== |
lhs.compare(target) == 0 |
!= |
lhs.compare(target) != 0 |
< |
lhs.compare(target) < 0 |
<= |
lhs.compare(target) <= 0 |
> |
lhs.compare(target) > 0 |
>= |
lhs.compare(target) >= 0 |
<=> |
static_cast<cat-type-of<BidirIt>>(lhs.compare(target) <=> 0) |
참고 사항
operator<=>의 반환 타입은 비교 카테고리 타입임이 보장돼요. value-type-of<BidirIt>가 char, wchar_t, char8_t, char16_t, 또는 char32_t인 경우 operator<=>의 반환 타입은 std::strong_ordering이에요.
예제
| 이 섹션은 불완전해요. 이유: 예제 없음 |
|---|
결함 보고서
다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용됐어요.
| DR | 적용 대상 | 발표된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 2217 | C++11 | std::string과 비교할 때 compare()의 인자가 str.c_str()이었어요. |
인자는 string_type(str.data(), str.size())이에요. |
같이 보기
compare |
일치하는 부분 시퀀스를 비교해요 (공개 멤버 함수) [edit] |
|---|