18
  • 我可以通过某个成员将迭代器设置为字符串中的第 5 位,还是我必须这样做for(i = 0; i < 5; ++i) iterator++;
  • 给定一个迭代器,如何将其转换为字符串中的数字偏移量?
  • 如果 std::iterators 无法做到这一点,可以提升吗?

迭代器 <-> 偏移量

4

3 回答 3

25

我可以通过某个成员将迭代器设置为字符串中的第 5 位吗

您可以使用std::advance

std::advance(iterator, 5);

或者

iterator += 5;

给定一个迭代器,如何将其转换为字符串中的数字偏移量?

您可以使用std::distance

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

或者

iterator - string.begin()
于 2012-09-19T06:31:00.097 回答
7

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

于 2012-09-19T06:32:11.950 回答
3
  1. 您可以使用 iterator + 4
  2. 试试这个:iterator - str.begin();
  3. 迭代器有运算符+and -; 您可以使用它们在迭代器和偏移量之间进行转换。
于 2012-09-19T06:38:13.843 回答