如何在 c++ 中重载字符串的<<
How to overload << for string in c++
可能的重复项:
如何在 c++ 中重载 cout 行为
我想让字符串的 cout 行为不同。 例如,它将始终在移交字符串之前添加"Hello"。所以这基本上是重载运算符,但对于字符串。怎么办?
例
std::cout<<" Kermit";
结果
Hello Kermit
请不要:
struct X
{
X& operator << (const char* x)
{
std::cout << "Hello " << x;
return *this;
}
};
//...
X cout;
cout << "Kermit";
你可以在文字周围使用包装器...
#include <iostream>
struct foo
{
foo(const char* s) : str(s) {}
friend
std::ostream& operator<<(std::ostream& s, foo const& f)
{ return s << "Hello " << f.str; }
const char* str;
};
int main(void)
{
std::cout << foo("Kermit") << std::endl;
}