Why I cannot cout string like this:
string text ; text = WordList[i].substr(0,20) ; cout << "String is : " << text << endl ; When I do this, I get the following error:
Error 2 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion) c:\users\mollasadra\documents\visual studio 2008\projects\barnamec\barnamec\barnamec.cpp 67 barnamec**
It is amazing, that even this is not working:
string text ; text = "hello" ; cout << "String is : " << text << endl ; 87 Answers
You need to include
#include <string> #include <iostream> 7You need to reference the cout's namespace std somehow. For instance, insert
using std::cout; using std::endl; on top of your function definition, or the file.
0There are several problems with your code:
WordListis not defined anywhere. You should define it before you use it.- You can't just write code outside a function like this. You need to put it in a function.
- You need to
#include <string>before you can use the string class and iostream before you usecoutorendl. string,coutandendllive in thestdnamespace, so you can not access them without prefixing them withstd::unless you use theusingdirective to bring them into scope first.
Above answers are good but If you do not want to add string include, you can use the following
ostream& operator<<(ostream& os, string& msg) { os<<msg.c_str(); return os; } You do not have to reference std::cout or std::endl explicitly.
They are both included in the namespace std. using namespace std instead of using scope resolution operator :: every time makes is easier and cleaner.
#include<iostream> #include<string> using namespace std; 1Use c_str() to convert the std::string to const char *.
cout << "String is : " << text.c_str() << endl ; If you are using linux system then you need to add
using namespace std;
Below headers
If windows then make sure you put headers correctly #include<iostream.h>
#include<string.h>
Refer this it work perfectly.
#include <iostream> #include <string> int main () { std::string str="We think in generalities, but we live in details."; // (quoting Alfred N. Whitehead) std::string str2 = str.substr (3,5); // "think" std::size_t pos = str.find("live"); // position of "live" in str std::string str3 = str.substr (pos); // get from "live" to the end std::cout << str2 << ' ' << str3 << '\n'; return 0; } 1