Estoy escribiendo esta función

vector<string> SplitIntoWords(const string& s) {
    vector<string> v_str = {};
    string::iterator str_b;
    str_b = begin(s);

    // TODO some action here

    return v_str;
}

Y necesito declarar un iterador que será igual al comienzo de la cadena s, que es un parámetro en mi función.

El problema está en la línea str_b = begin(s);: el código no se compila con ella. ¿Por qué es así y cómo puedo solucionarlo?

2
alekscooper 23 feb. 2018 a las 14:03

2 respuestas

La mejor respuesta

s es un objeto const , por lo que

begin(s)

Devuelve string::const_iterator, no puede asignar string::const_iterator a string::iterator. Puedes arreglarlo por

string::const_iterator str_b;
3
rafix07 23 feb. 2018 a las 11:06

Dado que s es const - calificado, begin(s) devuelve un string::const_iterator:

string::const_iterator str_b;
str_b = begin(s);

O mejor, dejemos que auto deduzca el tipo de str_b de su inicializador:

auto str_b = begin(s);
5
眠りネロク 23 feb. 2018 a las 11:06