1

重複の可能性:
c++ で cout の動作をオーバーロードする方法

文字列に対して cout の動作を変えたいと思います。たとえば、ハンドオーバーされた文字列の前に常に「Hello」が追加されます。したがって、これは基本的にオーバーロード演算子ですが、文字列用です。どうやってするの?

std::cout<<" Kermit";

結果

Hello Kermit
4

2 に答える 2

2

しないでください:

struct X
{
   X& operator << (const char* x)
   {
      std::cout << "Hello " << x;
      return *this;
   }
};

//...
X cout;
cout << "Kermit";
于 2013-02-01T16:35:10.540 に答える
0

リテラルのラッパーを使用できます...

#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;
}
于 2013-02-01T16:40:10.090 に答える