用于偏移和返回的std :: string :: iterator

时间:2012-09-19 06:29:10

标签: c++ iterator stdstring

  • 我可以通过某个成员将迭代器设置为字符串中的位置5,还是必须执行for(i = 0; i < 5; ++i) iterator++;
  • 鉴于迭代器,如何将其转换为字符串中的数字偏移?
  • 如果std :: iterators无法实现这一点,那么可以提升它吗?

迭代器&lt; - &gt;偏移

3 个答案:

答案 0 :(得分:22)

  

我可以通过某个成员

将迭代器设置为字符串中的第5位

您可以使用std::advance

std::advance(iterator, 5);

iterator += 5;
  

给定Iterator,如何将其转换为数字偏移量   字符串?

您可以使用std::distance

std::distance(string.begin(), iterator);

iterator - string.begin()

答案 1 :(得分:5)

std :: string迭代器是随机访问迭代器,它定义了+运算符。您可以使用begin(str) + 5获取位置5的迭代器。偏移量可以通过std::distance计算,它使用-operator作为随机访问迭代器。

答案 2 :(得分:2)

  1. 你可以用 iterator + 4
  2. 试试这个:iterator - str.begin();
  3. 迭代器有运算符+-;您可以使用它们在迭代器和偏移之间进行转换。