Std::string:: итератор для смещения и возврата
- Можно ли установить итератор в позицию 5 в строке через какой-либо элемент или мне нужно сделать
for(i = 0; i < 5; ++i) iterator++;
?
- Учитывая Iterator, как я могу преобразовать это числовое смещение в строку?
- Если это невозможно с помощью std:: iterators, можете повысить его?
Итераторы ↔ Offsets
Ответы
Ответ 1
Можно ли установить итератор в позицию 5 в строке через некоторый член
Вы можете использовать std:: advance
std::advance(iterator, 5);
или
iterator += 5;
Учитывая Iterator, как я могу преобразовать это числовое смещение в строка?
Вы можете использовать std:: distance
std::distance(string.begin(), iterator);
или
iterator - string.begin()
Ответ 2
std::string итераторы - это итераторы произвольного доступа, которые определяют оператор+. Вы можете получить итератор в позицию 5 с помощью begin(str) + 5
. Смещение может быть вычислено через std::distance
, который использует -оператор для итераторов произвольного доступа.
Ответ 3
- вы можете использовать
iterator + 4
- попробуйте следующее:
iterator - str.begin();
- итератор имеет оператор
+
и -
; вы можете использовать их для преобразования между итераторами и смещениями.