C++ 超载<&书信电报;带ostream的操作员不工作。为什么?

C++ 超载<&书信电报;带ostream的操作员不工作。为什么?,c++,C++,我有一个小代码段,它试图重载“首先,流式传输的不是std::string,而是const char*。您可以通过编写cout来解决这个问题,您应该向发送一个字符串类型。在您的示例中,您基本上是在自食其果。您重载运算符可能是因为已经有一个重载接受std::string?@JoachimPileborg更可能接受const char*@JoachimPileborg接受std::string的重载在头中定义,显然,这里不包括。main的返回类型在哪里?@AlgirdasPreidžius:OP的实现

我有一个小代码段,它试图重载“首先,流式传输的不是
std::string
,而是
const char*
。您可以通过编写
cout来解决这个问题,您应该向
发送一个字符串类型。在您的示例中,您基本上是在自食其果。您重载
运算符可能是因为已经有一个重载接受
std::string
?@JoachimPileborg更可能接受
const char*
@JoachimPileborg接受
std::string
的重载在
头中定义,显然,这里不包括。
main
的返回类型在哪里?@AlgirdasPreidžius:OP的实现中没有停止
包括
。它会输出“重载”字符串,但不会输出“string123”@buld0zzr没错。所以OP的问题是关于重载,而不是如何进行一些打印示例。根据您的实现,
ostream@buld0zzr你在开玩笑吗?这不是问题所在。这里没有一般
ostream@user2531608向上投票并回答接受是表示感谢的一种方式:)
#include<iostream>
using namespace std;

ostream& operator<<(ostream& out,const string& str)
{
    out << "overloading" << str << "done";
    return out;
}

int main()
{
    cout << "string123";
}
ostream& operator<<(ostream& out,const string& str)
{
    out<<"overloading";
    return out;
}

int main()
{
    string s = "string123";
    cout << s;
}
out << "overloading" << str <<"done"
#include<iostream>
using namespace std;
ostream& operator<<(ostream& out, const string& str)
{
    out << "overloading" << str.c_str() << "done";
    return out;
}

int main()
{
    cout << std::string("string123");
}
overloadingstring123done