使用std :: regex_token_iterator(不一定)查找单词以查找字符串中的char位置

时间:2014-11-23 11:27:10

标签: c++ regex

string zodis;
sregex_token_iterator it(eil.begin(), eil.end(), std::regex("[A-Za-z]+"));
sregex_token_iterator reg_end;

for (; it != reg_end; ++it) {
    zodis = it -> str();
    /* ... */
}

基本上我使用上面的代码得到了这个词,但是我想知道字符串zodis中字符串eil的第一个字符位置是什么(字符串zodis取自eil

我试着指向从begin()返回的迭代器,但这只是给了我字符

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,所以我想出了一个干净利落的方法。

    int basepoint=0;
    while(whatever)
    {
      int c1=zodis.end()-zodis.begin();//the length of the word
      int c2=eil.find(zodis,basepoint);//the starting position of the word
      basepoint+=c1+c2;//start point for the find function for the next loop
     }

这将找到所有单词起点(即使整行是同一个单词)

如果你有

的文本文件
word word word word word

使用此

cout << c1 << " " << c2;

其中c1是从字符串长度中取出的单词,c2是起始位置, 会给你

4 0
4 5
4 10
4 15
4 20