Учитывая просто станд.:: строковый итератор, действительно ли возможно определить запуск и конечные точки строки? Если я не имею доступа к строковому объекту и так не могу назвать string.begin () и string.end (), и все, что я могу сделать, увеличить или постепенно уменьшить итератор и протестировать значение.
Спасибо, Phil
Короткий ответ - нет. Длинный ответ таков: поскольку итераторы не должны знать о контейнерах или диапазонах, которые проходят итерацию, ожидается, что они только
Кроме того, итераторы некоторых типов могут делать больше, чем просто перечисленное выше, но в основном все они должны иметь / выполнять указанное выше в той или иной форме.
По умолчанию std :: string :: iterator - это просто случайный двунаправленный итератор, ничего не знающий о контейнере.
Но если вы работаете на платформе Visual C ++, возможно, вы можете использовать какой-нибудь способ взлома, например, следующий, чтобы передать управление его контейнеру, но это очень опасно:
// it is the passed in string::iterator parameter.
if (it._Has_container()) {
string* strRef = (string*)it._Mycont;
}