未开启我的意思是:
ofstream outFile;
outFile << "Some text";
所以我将文字放在ofstream
中,而不调用.open()
方法。 g ++没有抱怨,所以也许我仍然可以保存数据?怎么样?
答案 0 :(得分:7)
执行此操作后,流将处于失败状态(outFile.fail()
将为true)。文本没有存储在任何地方,所以不,你不能保存它。
如果您想将数据存储在内存中,请使用std::ostringstream
(来自<sstream>
标题)。
答案 1 :(得分:3)
g ++没有抱怨,因为它是一个编译器并且没有运行代码,但运行它可能会导致一些令人讨厌的事情。
同样地,如果你试图取消引用NULL
指针,g ++就不会抱怨。
答案 2 :(得分:0)
当带有流的操作失败时,流会在内部将错误存储为bits,表示eof,失败和错误。如果您使用ios::exceptions()将其设置为
,则该流也会引发异常iostream库的部分设计似乎是使用处于错误状态的流将静默地丢弃输出和/或不产生任何输入,但不会警告用户。这样做的好处是你可以使用流执行多个操作,然后在最后检查它,相信如果它在中间的某个地方失败,它仍然处于失败状态,并且自从没有产生任何东西它失败了。