将可能为空的istream打印到ostream

时间:2019-12-03 23:03:17

标签: c++ iostream

我想将istream的内容放入ostream中。我尝试这样做:

std::cout << my_istream.rdbuf() << '\n';

但是,当istream为空时,它会触发failbit中的ostream(参见operator<<,重载9),这会导致{{1 }},以及以后不会打印的任何内容。

为什么它触发'\n'(这样做的原因是什么?),还有另一种方式来打印不认为空的流是错误的流吗?

编辑:为避免该问题,我可以这样做:

failbit

尽管有人能指点我,我还是会很感激的,是什么原因导致委员会决定在缓冲区为空的情况下触发char c; while(my_stream.get(c)) std::cout.put(c);

0 个答案:

没有答案