C++如何显示/打印字符串对象?计算<< int 工作,cout <<字符串不
我遇到了谷歌无法解决的问题。为什么在以下程序中 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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您必须包含
string
标头才能获取重载的运算符<<
。此外,您可能希望从
getval
返回const string&
而不是string
,请更改构造函数以接受const string&
而不是string
,并更改display
以接受const MyClass& ob
以避免不必要的复制。You must include the
string
header to get the overloadedoperator<<
.Also you might want to return a
const string&
instead of astring
fromgetval
, change your constructor to accept aconst string&
instead of astring
, and changedisplay
to accept aconst MyClass& ob
to avoid needless copying.我不知道什么对你有用,或者你是否已经修复了它,但我只是在研究这个......对于你的 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!