如何在 c++ 中重载字符串的<<

How to overload << for string in c++

本文关键字:lt 字符串 重载 c++      更新时间:2023-10-16

可能的重复项:
如何在 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;
}