Pourquoi je ne peux pas cout
string
comme ceci:
string text ;
text = WordList[i].substr(0,20) ;
cout << "String is : " << text << endl ;
Lorsque je fais cela, j'obtiens l'erreur suivante:
Erreur 2 erreur C2679: binaire '<<': aucun opérateur trouvé ne prenant un opérande de droite 'de type' std :: string '(ou aucune conversion acceptable) c:\users\mollasadra\documents\visual studio 2008\projets\barnamec\barnamec\barnamec.cpp 67 barnamec **
C'est étonnant, même si cela ne fonctionne pas:
string text ;
text = "hello" ;
cout << "String is : " << text << endl ;
Vous devez inclure
#include <string>
#include <iostream>
Vous devez référencer l'espace de noms du cout std
d'une manière ou d'une autre. Par exemple, insérer
using std::cout;
using std::endl;
au-dessus de votre définition de fonction ou du fichier.
Il y a plusieurs problèmes avec votre code:
WordList
n'est défini nulle part. Vous devriez le définir avant de l'utiliser.#include <string>
avant de pouvoir utiliser la classe de chaînes et iostream avant d'utiliser cout
ou endl
.string
, cout
et endl
résident dans l'espace de noms std
; vous ne pouvez donc pas y accéder sans les préfixer avec std::
sauf si vous utilisez d'abord la directive using
.Les réponses ci-dessus sont bonnes, mais si vous ne souhaitez pas ajouter de chaîne, vous pouvez utiliser les options suivantes:
ostream& operator<<(ostream& os, string& msg)
{
os<<msg.c_str();
return os;
}