如何显示/打印字符串对象?cout & lt; & lt;Int工作,count <<字符串



我遇到了一个google无法解决的问题。为什么在下面的程序中,cout对int对象有效,而对string对象无效?

#include<iostream>
using namespace std;
class MyClass {
    string val;
public:
    //Normal constructor.
    MyClass(string i) {
        val= i;
        cout << "Inside normal constructorn";
    }
    //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;
}

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

也可以从getval返回const string&而不是string,更改构造函数以接受const string&而不是string,并更改display以接受const MyClass& ob以避免不必要的复制。

我不知道什么是为你工作,或者如果你已经修复了它,但我只是在这个工作…对于您的cout,您必须将行设置为cout <<"insert string here" <<endl;你没有把第二个<<在字符串之后。希望这对你有帮助!

相关内容

最新更新