2012-09-19 123 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. 迭代器有運營商+-;您可以使用它們在迭代器和偏移量之間進行轉換。