未开封我的意思是:
ofstream outFile;
outFile << "Some text";
所以我把文本放在一个ofstream
没有调用.open()
方法的地方。g++ 没有抱怨,所以也许我仍然可以保存数据?如何?
执行此操作后,流将处于失败状态(outFile.fail()
将是真的)。文本没有存储在任何地方,所以不,你不能保存它。
如果要将数据存储在内存中,请改用std::ostringstream
(来自<sstream>
标头)。
g++ 不会抱怨,因为它是一个编译器并且不运行代码,但运行它可能会导致一些讨厌的事情。
同样,如果您尝试取消引用NULL
指针,g++ 也不会抱怨。
当带有流的操作失败时,流在内部将错误存储为表示 eof、fail 和 bad的位。如果您使用ios::exceptions()将其设置为,流也可能引发异常。
iostream 库的部分设计似乎是使用处于错误状态的流将默默地丢弃输出和/或不产生输入,但不会以其他方式提醒用户。这样做的好处是您可以使用流执行多个操作,然后在最后检查它,确信如果它在中间的某个地方失败,它仍然处于失败状态并且因为失败而没有产生任何东西。