web-dev-qa-db-fra.com

Pourquoi je ne peux pas couter une corde?

Pourquoi je ne peux pas coutstring 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 ;
129
Ata

Vous devez inclure

#include <string>
#include <iostream>
225
Kiril Kirov

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.

11
souser12345

Il y a plusieurs problèmes avec votre code:

  1. WordList n'est défini nulle part. Vous devriez le définir avant de l'utiliser.
  2. Vous ne pouvez pas simplement écrire du code en dehors d'une fonction comme celle-ci. Vous devez le mettre dans une fonction.
  3. Vous devez #include <string> avant de pouvoir utiliser la classe de chaînes et iostream avant d'utiliser cout ou endl.
  4. 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.
6
sepp2k

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;
}
1
Maheswar Reddy