public member function
<regex>

std::match_results::position

difference_type position (size_type n = 0) const;
返回匹配的位置
返回目标序列中第 *n* 个匹配项的第一个字符在match_results对象中的位置,该对象是ready状态。

这是目标序列中的第一个字符与匹配的第一个字符之间的距离。

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

参数

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

返回值

序列中匹配的位置。

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::position
// * using smatch, a standard alias of match_results<string::iterator>
#include <iostream>
#include <string>
#include <regex>

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

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

  for (unsigned i=0; i<m.size(); ++i) {
    std::cout << "match " << i << " (" << m[i] << ") ";
    std::cout << "at position " << m.position(i) << std::endl;
  }

  return 0;
}

输出
match 0 (subject) at position 5
match 1 (sub) at position 5
match 2 (ject) at position 8


另见