Por qué no me cout
string
gusta 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 std
ousing std::cout
;using std::endl
;string text;
la edición (error agregado) que dice que este no es el problema sino elstring
encabezado que falta .std::basic_string
clase (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_string
trabajos en VC ++, pero no funcionará en todos los compiladores.Debe hacer referencia al espacio de nombres de cout de
std
alguna manera. Por ejemplo, inserteencima de la definición de su función o el archivo.
fuente
Hay varios problemas con su código:
WordList
no 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 usarcout
oendl
.string
,cout
yendl
vivir en elstd
espacio de nombres, por lo que no puede acceder a ellos sin prefijarlos astd::
menos que use lausing
directiva 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::cout
nistd::endl
explícitamente.Ambos están incluidos en el
namespace std
.using namespace std
en 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.h
a las inclusiones no tiene nada que ver con que el sistema operativo objetivo sea Windows,#include <iostream>
y#include <string>
funcionará en Windows.