【问题标题】:Use istream and ostream objects as data members of class c++使用 istream 和 ostream 对象作为类 c++ 的数据成员
【发布时间】:2021-01-12 00:51:27
【问题描述】:
我正在尝试实现一个不能直接使用 cin 和 cout 的类。我需要将输入和输出流的引用传递给类的构造函数并将它们保存在一些私有字段中,以便以后可以在类的其他函数中访问它们。我怎样才能实现这个功能?
【问题讨论】:
-
始终有效的是控制内部缓冲区,如here 所述。另一种选择是拥有std::ostream 和std::istream 引用成员。但这些总是需要正确初始化。
标签:
c++
class
c++17
ostream
istream
【解决方案1】:
为什么不简单地使用对std::istream 和std::ostream 的引用?
struct X
{
std::ostream& os;
std::istream& is;
X( std::ostream& os_, std::istream& is_):os{os_}, is{is_}{}
void Func() { os << "Hallo" << std::endl; }
void Inp() { std::string s; is >> s; os << s << std::endl; }
};
int main()
{
X x(std::cout, std::cin);
x.Func();
x.Inp();
}