我想将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);
。