public member function
<regex>

std::match_results::length

difference_type length (size_type n = 0) const;
返回匹配的长度
返回在match_results对象中第n个匹配的长度(以字符为单位),该对象是ready

它返回与其第nsub_match元素的length成员相同的值。

match_results对象应该是ready的,这发生在它在调用regex_matchregex_search时作为合适的参数传递之后。

参数

n
匹配编号。 此编号应低于match_results::size
匹配编号0表示整个匹配的表达式。 如果有任何子表达式,则后续的匹配编号标识这些子表达式。
成员类型size_type是一种无符号整型类型。

返回值

子匹配n中的字符数。

difference_type是一个成员类型,定义为迭代器类型使用的差分类型的别名BidirectionalIterator(模板类型)。 这通常是一个有符号的整数类型。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// match_results::length
// * using smatch, a standard alias of match_results<string::iterator>
#include <iostream>
#include <string>
#include <regex>

int main ()
{
  std::string s ("subject");
  std::smatch m;
  std::regex e ("(sub)(.*)");

  std::regex_match ( s, m, e );

  for (unsigned i=0; i<m.size(); ++i) {
    std::cout << "match " << i << " (" << m[i] << ")";
    std::cout << " has a length of " << m.length(i) << std::endl;
  }

  return 0;
}

输出
match 0 (subject) has a length of 7
match 1 (sub) has a length of 3
match 2 (ject) has a length of 4


另见