2012-09-19 50 views
13
  • ¿Puedo establecer un iterador en la posición 5 en una cadena a través de algún miembro o tengo que hacer un for(i = 0; i < 5; ++i) iterator++;?
  • Dado un iterador, ¿cómo puedo convertir eso a un desplazamiento numérico en la cadena?
  • Si esto no es posible con std :: los iteradores pueden impulsar hacerlo?

Iteradores < -> Las compensacionesstd :: string :: iterador para compensar y volver

Respuesta

17

¿Puedo establecer un iterador a la posición 5 de una cadena a través de algún miembro de

Usted puede utilizar std::advance

std::advance(iterator, 5); 

o

iterator += 5; 

Dado un iterador, ¿cómo puedo convertirlo en un desplazamiento numérico en la cadena ?

Puede utilizar std::distance

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

o

iterator - string.begin() 
5

iteradores std :: string son iteradores de acceso aleatorio, que definen el operador +. Puede obtener un iterador en la posición 5 con begin(str) + 5. El desplazamiento se puede calcular a través del std::distance, que usa -operador para iteradores de acceso aleatorio.

2
  1. puede utilizar iterator + 4
  2. probar esto: iterator - str.begin();
  3. iterador tiene operador + y -; puede usarlos para convertir iteradores y compensaciones.
Cuestiones relacionadas