2012-09-19 96 views
13
  • 我可以通过某个成员设置一个迭代器到一个字符串中的位置5或我必须做一个for(i = 0; i < 5; ++i) iterator++;
  • 给定一个Iterator,如何将其转换为字符串中的数字偏移量?
  • 如果std :: iterators不可能这样做可以提升吗?

迭代< - >偏移std :: string ::迭代器偏移和返回

回答

17

我可以设置一个迭代器通过一些成员在一个字符串的位置5

您可以使用std::advance

std::advance(iterator, 5); 

iterator += 5; 

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

您可以使用std::distance

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

iterator - string.begin() 
5

的std :: string迭代器是随机访问迭代器,它定义了+操作。你可以通过begin(str) + 5得到一个迭代器来定位5。可以通过std::distance来计算偏移量,其使用随机访问迭代器的操作器。

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