error C2679: binario '> >' : no se encontró ningún operador que tome un operando a la derecha del tipo 'std :: string' (o no hay una conversión aceptable)

StackOverflow https://stackoverflow.com/questions/1631338

Pregunta

Por favor, no confunda con el título, ya que alguien ya lo solicitó, sino para un contexto diferente

El código siguiente en el compilador de Visual C ++ (VS2008) no se compila, sino que genera esta excepción:

std::ifstream input (fileName);   

while (input) {
  string s;
  input >> s;
  std::cout << s << std::endl;
};

Pero este código se compila bien en cygwin g ++. ¿Algún pensamiento?

¿Fue útil?

Solución

¿Ha incluido todos los siguientes encabezados?

  • <fstream>
  • <istream>
  • <iostream>
  • <string>

Supongo que olvidó < string > .

En una nota al margen: eso debería ser std :: cout y std :: endl .

Otros consejos

Agregando a @sbi respuesta, en mi caso la diferencia fue incluir < string > en lugar de < string. h > (en VS 2017).

Consulte la siguiente respuesta: respuesta de caso similar

incluye < string >

Intente incluir el archivo de encabezado de cadena junto con el archivo < iostream > . Funcionará en algunos compiladores incluso sin el < string > porque las configuraciones para diferentes compiladores son diferentes y es el compilador el responsable de leer los archivos del preprocesador que comienzan con el símbolo '#' para generar un archivo obj.

Además de lo que otros dijeron. El siguiente código fue necesario en mi aplicación para compilar con éxito.

std::cout << s.c_str() << std::endl;

Otra solución a esto es ir a las propiedades del proyecto - > General - > Conjunto de caracteres y elija " Conjunto de caracteres Ues Multi-Byte " (No necesitará usar c_str () para generar la cadena)

Hay desventajas en el uso de MBCS, por lo que si planea localizar su software, le aconsejaría que no lo haga.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top