【发布时间】:2015-05-28 01:37:13
【问题描述】:
std::ostream 没有成员函数close()。什么类型的流不应该被允许关闭?
例如,也许我想关闭 std::cout 以防止任何进一步的写入。
std::cout.close(); // ‘std::ostream’ has no member named ‘close’
如果我使用的是 C 库,我可以使用以下命令关闭 stdout:
fclose(stdout); // no problem
那么从std::ostream 中省略close() 成员的想法是什么?
相关:
【问题讨论】:
-
ostream是一个抽象,它没有close或open因为并非所有流(或者更确切地说是它们的底层缓冲区)都可以关闭或打开,如您所见。对于它的价值,fclose(stdout);仍然可以在 C++ 中工作,因为cout与stdout明确关联。 -
关闭 ostream 非常有意义——这意味着不应再向其发送输出,任何尝试这样做都应在流上设置错误标志...