gpt4 book ai didi

C++ 在类中包装 cin 和 cout - 重载 << 和 >> 运算符

转载 作者:太空狗 更新时间:2023-10-29 19:59:35 25 4
gpt4 key购买 nike

我正在尝试创建一个控制台类。我想包装 cincout在类里面重载 <<>>运营商。所以我可以这样使用类:

// Output
Console << "Call cout from Console" << endl;

// Input
string str;
Console >> str; // Call cin

我最好的猜测是:

class Console {
//...
public:
ostream& operator<< (ostream& os)
{
cout << os;
return &cout;
}
//...
};

但我知道那是错误的,我怎么能重载运算符以将控制台类同时用作 cincout

最佳答案

我得到了一个可以处理流操纵器的工作代码。你可以看到我的代码在运行 in this Ideone page

代码如下:

#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;
}

感谢@MooingDuck 的讨论让我找到了可行的答案,感谢@111111 作为起点。

关于C++ 在类中包装 cin 和 cout - 重载 << 和 >> 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12433055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com