La pregunta está en el título, he intentado esto como lo usé en el pasado, pero ahora no funciona:

for (list<string>::iterator it = list1.begin(); it != list1.end(); it++){
    cout << *it;
}

El error es el siguiente:

"ningún operador" & lt; & lt; "coincide con estos operandos Los tipos de operandos son: std :: ostream & lt; & lt; std :: cadena "

No he usado c ++ como durante 2 años y ahora estoy atascado aquí, uso Google pero no encontré ninguna buena respuesta.

¡Gracias de antemano por su respuesta!

2
Nepo 26 ene. 2016 a las 11:32

2 respuestas

La mejor respuesta

Olvidó incluir un encabezado, probablemente <string> (o, más improbable, <iostream> o <list>). Los tres son obligatorios, no puede confiar en ningún encabezado de biblioteca estándar, incluido otro.

2
Baum mit Augen 26 ene. 2016 a las 08:55

Las sobrecargas de operator<< para std::string en realidad no se encuentran en <iostream> sino en <string>. El estándar no restringe que una implementación de biblioteca incluya encabezados arbitrarios, por lo que la mayoría de las implementaciones incluirán <string> en algún lugar de la cadena. En caso de que el tuyo no lo haga, debes incluir <string> manualmente.

1
user5840769 26 ene. 2016 a las 08:43