C++如何显示/打印字符串对象?计算<< int 工作,cout <<字符串不

发布于 2024-11-28 02:22:44 字数 654 浏览 0 评论 0 原文

我遇到了谷歌无法解决的问题。为什么在以下程序中 cout 适用于 int 对象而不适用于 string 对象?

#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;
}

I ran into an issue google could not solve. Why is that cout works for an int object but not a string object in the following program?

#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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

毁我热情 2024-12-05 02:22:44

您必须包含 string 标头才能获取重载的运算符<<

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

You must include the string header to get the overloaded operator<<.

Also you might want to return a const string& instead of a string from getval, change your constructor to accept a const string& instead of a string, and change display to accept a const MyClass& ob to avoid needless copying.

逐鹿 2024-12-05 02:22:44

我不知道什么对你有用,或者你是否已经修复了它,但我只是在研究这个......对于你的 cout,你必须将行设置为 cout << “在此处插入字符串”<<结束;你没有把第二个<<在字符串之后。希望这有帮助!

I don't know what is working for you or if you have fixed it but I just was working on this... for your cout you must put the line as cout << "insert string here" << endl; You're not putting the second << after the string. Hope this helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文