Por qué no me cout stringgusta esto:
string text ;
text = WordList[i].substr(0,20) ;
cout << "String is : " << text << endl ;
Cuando hago esto, aparece el siguiente error:
Error 2 error C2679: binario '<<': no se encontró ningún operador que tome un operando derecho del tipo 'std :: string' (o no hay una conversión aceptable) c: \ users \ mollasadra \ documents \ visual studio 2008 \ proyectos \ barnamec \ barnamec \ barnamec.cpp 67 barnamec **
Es sorprendente que incluso esto no funcione:
string text ;
text = "hello" ;
cout << "String is : " << text << endl ;

#include <iostream>?Respuestas:
Necesitas incluir
fuente
using namespace stdousing std::cout;using std::endl;string text;la edición (error agregado) que dice que este no es el problema sino elstringencabezado que falta .std::basic_stringclase (porque indirectamente incluyen el encabezado <xstring> definido por la implementación ( nunca lo incluyen directamente )). Si bien eso le permite usar la clase de cadena, lo relevanteoperator<<se define en el encabezado <string>, por lo que debe incluirlo manualmente. También depende de otros encabezados para incluir indirectamente la definición destd::basic_stringtrabajos en VC ++, pero no funcionará en todos los compiladores.Debe hacer referencia al espacio de nombres de cout de
stdalguna manera. Por ejemplo, inserteencima de la definición de su función o el archivo.
fuente
Hay varios problemas con su código:
WordListno está definido en ningún lado. Debe definirlo antes de usarlo.#include <string>antes de poder usar la clase de cadena y iostream antes de usarcoutoendl.string,coutyendlvivir en elstdespacio de nombres, por lo que no puede acceder a ellos sin prefijarlos astd::menos que use lausingdirectiva para ponerlos en primer lugar.fuente
Las respuestas anteriores son buenas, pero si no desea agregar incluir cadenas, puede usar lo siguiente
fuente
Use c_str () para convertir std :: string a const char *.
fuente
No tiene que hacer referencia
std::coutnistd::endlexplícitamente.Ambos están incluidos en el
namespace std.using namespace stden lugar de usar el operador de resolución de alcance::cada vez que lo hace es más fácil y limpio.fuente
Si está utilizando el sistema Linux, entonces necesita agregar
using namespace std;Debajo de los encabezados
Si hay ventanas, asegúrese de colocar los encabezados correctamente
#include<iostream.h>#include<string.h>Consulte esto funciona perfectamente.
fuente
using namespace std;no tiene nada que ver con el objetivo del serlinux. Del mismo modo, agregar el.ha las inclusiones no tiene nada que ver con que el sistema operativo objetivo sea Windows,#include <iostream>y#include <string>funcionará en Windows.