我如何查看字符串迭代器的下一个值

时间:2010-01-08 02:40:48

标签: c++ string iterator

在遍历整个string的循环中,如何查看迭代器的下一个值?

for (string::iterator it = inp.begin(); it!= inp.end(); ++it)
{
  // Just peek at the next value of it, without actually incrementing the iterator
}

这在C中很简单,

for (i = 0; i < strlen(str); ++i) {
     if (str[i] == str[i+1]) {
         // Processing
     }
}

在c ++中以上有效的方法吗?

注意:我没有使用Boost。

2 个答案:

答案 0 :(得分:5)

if ( not imp.empty() )
{
    for (string::iterator it = inp.begin(); it!= inp.end(); ++it)
         if (it + 1 != inp.end() and *it == *(it + 1)) {
             // Processing
         }
    }
}

if ( not imp.empty() )
{
    for (string::iterator it = inp.begin(); it!= inp.end() - 1; ++it)
        if ( *it == *(it+1) ) {
            // Processing
        }
    }
}

答案 1 :(得分:2)

string碰巧提供随机访问迭代器,因此存在operator+(int)。你可以使用Shmoopty的答案,很简单。

如果您使用list<>,它只提供双向迭代器,那么您将保留第二个迭代器。

for (list<char>::iterator it(inp.begin()), next(it);
        it != inp.end() && ++next != inp.end(); it = next) {
    if (*it == *next) {
        // Processing
    }
}