2012-09-19 18 views
13
  • Posso impostare un iteratore per posizionare 5 in una stringa tramite un membro o devo fare un for(i = 0; i < 5; ++i) iterator++;?
  • Dato un Iterator, come posso convertirlo in un offset numerico nella stringa?
  • Se questo non è possibile con std :: iterators può incrementare farlo?

Iteratori < -> Offsetstd :: string :: iterator per offset e back

risposta

17

Posso impostare un iteratore alla posizione 5 in una stringa tramite qualche membro

È possibile utilizzare std::advance

std::advance(iterator, 5); 

o

iterator += 5; 

Dato un Iterator, come posso convertirlo in un offset numerico nella stringa ?

È possibile utilizzare std::distance

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

o

iterator - string.begin() 
5

iteratori std :: string sono iteratori ad accesso casuale, che definiscono l'operatore +. È possibile ottenere un iteratore per la posizione 5 con begin(str) + 5. Offset può essere calcolato tramite std::distance che utilizza -operator per iteratori ad accesso casuale.

2
  1. è possibile utilizzare iterator + 4
  2. provare questo: iterator - str.begin();
  3. iteratore ha dell'operatore + e -; puoi usarli per convertire tra iteratori e offset.
Problemi correlati