函数模板
<regex>

std::operators (match_results)

相等 (1)
template <class BidirectionalIterator, class Alloc>  bool operator== ( const match_results<BidirectionalIterator,Alloc>& lhs,                    const match_results<BidirectionalIterator,Alloc>& rhs );
不等 (2)
template <class BidirectionalIterator, class Alloc>  bool operator!= ( const match_results<BidirectionalIterator,Alloc>& lhs,                    const match_results<BidirectionalIterator,Alloc>& rhs );
match_results 的关系运算符
返回 match_results 对象 lhsrhs 之间适当的相等或不等比较运算的结果。

相等比较的过程如下(如果在过程中找到确定的答案,则停止):
  • 如果两个对象都未就绪,则为 true。
  • 如果只有一个对象就绪,则为 false。
  • 如果两个对象都为空,则为 true。
  • 如果两个前缀比较不相等,则为 false。
  • 如果两个大小不同,则为 false。
  • 如果算法 equal 在比较两个对象中的 sub_match 元素范围时返回 false,则为 false。
  • 如果两个后缀相等,则为 true。
  • 否则,为 false。
对于不等比较,结果是相反的。

参数

lhs, rhs
match_results 容器(分别位于运算符的左侧和右侧),两者都具有相同的模板参数(BidirectionalIteratorAlloc).

返回值

true如果条件成立,则为 true,并且false否则为 false。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// match_results comparisons
// - using cmatch, a standard alias of match_results<const char*>
#include <iostream>
#include <regex>

int main ()
{
  std::cmatch m1,m2,m3;

  std::regex_search ( "a needle in the haystack", m1, std::regex("needle") );
  std::regex_search ( "a needle in the haystack", m2, std::regex("needle") );
  std::regex_search ( "the needle in a haystack", m3, std::regex("needle") );

  if (m1==m2) std::cout << "m1 and m2 are equal\n";
  if (m2!=m3) std::cout << "m2 and m3 are not equal\n";  // prefix() don't match

  return 0;
}

输出
a and b are equal
b and c are not equal


另见