Pourquoi je ne peux pas couter une chaîne?

Pourquoi je ne peux pas cout ssortingng comme ceci:

 ssortingng 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: binary ‘<<': aucun opérateur trouvé prenant un opérande de droite de type 'std :: string' (ou il n'y a pas de conversion acceptable) c: \ users \ mollasadra \ documents \ visual studio 2008 \ projets \ barnamec \ barnamec \ barnamec.cpp 67 barnamec **

C’est incroyable, même cela ne fonctionne pas:

 ssortingng text ; text = "hello" ; cout << "String is : " << text << endl ; 

Vous devez inclure

 #include  #include  

Vous devez faire référence à l’espace de noms du cout std quelque sorte. Par exemple, insérer

 using std::cout; using std::endl; 

en haut de votre définition de fonction ou du fichier.

Il y a plusieurs problèmes avec votre code:

  1. WordList n’est défini nulle part. Vous devez 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 avant de pouvoir utiliser la classe de chaîne et iostream avant d’utiliser cout ou endl .
  4. ssortingng , cout et endl vivent dans l’espace de noms std , vous ne pouvez donc pas y accéder sans les préfixer avec std:: moins que vous n’utilisiez d’abord la directive using .

Les réponses ci-dessus sont bonnes, mais si vous ne souhaitez pas append de chaîne, vous pouvez utiliser les éléments suivants.

 ostream& operator<<(ostream& os, string& msg) { os< 

Vous n’avez pas besoin de référencer explicitement std::cout ou std::endl .
Ils sont tous deux inclus dans l’ namespace std . using namespace std au lieu d’utiliser un opérateur de résolution de scope :: chaque fois que c’est facile et plus propre.

 #include #include using namespace std; 

Si vous utilisez le système Linux, vous devez append

using namespace std;

En-têtes

Si windows s’assure alors que vous mettez correctement les en-têtes #include

#include

Référez-vous cela fonctionne parfaitement.

 #include  #include  int main () { std::ssortingng str="We think in generalities, but we live in details."; // (quoting Alfred N. Whitehead) std::ssortingng str2 = str.substr (3,5); // "think" std::size_t pos = str.find("live"); // position of "live" in str std::ssortingng str3 = str.substr (pos); // get from "live" to the end std::cout << str2 << ' ' << str3 << '\n'; return 0; }