Bra*_*ler 3 c++ cout operator-overloading stream cin
我正在尝试创建一个Console类.我想换行cin,并cout在课堂上和重载<<和>>运营商.所以我可以这样使用这个类:
// Output
Console << "Call cout from Console" << endl;
// Input
string str;
Console >> str; // Call cin
Run Code Online (Sandbox Code Playgroud)
我最好的猜测是:
class Console {
//...
public:
ostream& operator<< (ostream& os)
{
cout << os;
return &cout;
}
//...
};
Run Code Online (Sandbox Code Playgroud)
但我知道这是错的,我怎么能重载操作符来使用Console类作为cin和cout?
我有一个可以处理流操纵器的工作代码.您可以在此Ideone页面中查看我的代码
这是代码:
#include <iostream>
typedef std::ostream& (*manip) (std::ostream&);
class console {
};
template <class T> console& operator<< (console& con, const T& x) { std::cout << x; return con; }
template <class T> console& operator>>(console& con, T& x) { std::cin >>x; return con; }
console& operator<< (console& con, manip manipulator){ std::cout<<manipulator; return con;}
int main() {
console c;
int a,b;
c>>a>>b;
c << "hello world"<<std::endl<<std::hex<<(a+b)<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
感谢@MooingDuck的讨论让我得到了一个有效的答案,并以@ 111111为起点.