插入未打开流的数据会发生什么变化?

时间:2014-08-07 20:40:27

标签: c++ stream

我的直觉是,数据完全丢失了。我似乎无法找到验证这种怀疑的来源。

插入到unopen流中的数据会发生什么变化? (例如std::ofstream

数据被丢弃了吗?也许它会存储在缓冲区中,直到打开流?也许别的什么?

2 个答案:

答案 0 :(得分:1)

如果输出流处于故障状态(例如:未打开),则流不会发生任何事情 - 输出/缓冲区数据的请求将被完全忽略。

注意:如果启用了异常std::ios_base::badbit,则会抛出异常。

答案 1 :(得分:1)

在标准"备注"对应于缓冲区上的操作的所有文件流缓冲区方法,它表示如果is_open() == false,该函数总是失败。失败定义为返回traits_type::eof()。此特殊值由更高级别的IO函数捕获,而这些IO函数又在流状态中设置std::ios_base::badbit标志。