C ++如何显示/打印字符串对象? cout<< int works,cout<<字符串没有

时间:2011-08-05 23:37:25

标签: c++ string class object cout

我遇到了谷歌无法解决的问题。为什么该cout适用于int对象,但不适用于以下程序中的字符串对象?

#include<iostream>
using namespace std;
class MyClass {
    string val;
public:
    //Normal constructor.
    MyClass(string i) {
        val= i;
        cout << "Inside normal constructor\n";
    }
    //Copy constructor 
    MyClass(const MyClass &o) {
        val = o.val;
        cout << "Inside copy constructor.\n";
    }
    string getval() {return val; }
};
void display(MyClass ob)
{
    cout << ob.getval() << endl;    //works for int but not strings
}
int main()
{
    MyClass a("Hello");
    display(a);
    return 0;
}

2 个答案:

答案 0 :(得分:9)

您必须包含string标头才能获得重载的operator<<

此外,您可能希望从const string&返回string而不是getval,将构造函数更改为接受const string&而不是string,并更改display以接受const MyClass& ob以避免不必要的复制。

答案 1 :(得分:2)

我不知道什么对你有用,或者如果你已经解决了但是我正在努力解决这个问题...对于你的cout你必须把这行作为cout&lt;&lt; “在这里插入字符串”&lt;&lt; ENDL;你没有把第二个&lt;&lt;在字符串之后。希望这有帮助!