我的直觉是,数据完全丢失了。我似乎无法找到验证这种怀疑的来源。
插入到unopen流中的数据会发生什么变化? (例如std::ofstream
)
数据被丢弃了吗?也许它会存储在缓冲区中,直到打开流?也许别的什么?
答案 0 :(得分:1)
如果输出流处于故障状态(例如:未打开),则流不会发生任何事情 - 输出/缓冲区数据的请求将被完全忽略。
注意:如果启用了异常std::ios_base::badbit
,则会抛出异常。
答案 1 :(得分:1)
在标准"备注"对应于缓冲区上的操作的所有文件流缓冲区方法,它表示如果is_open() == false
,该函数总是失败。失败定义为返回traits_type::eof()
。此特殊值由更高级别的IO函数捕获,而这些IO函数又在流状态中设置std::ios_base::badbit
标志。