可以将未打开的C ++ ofstream的数据写入文件吗?

时间:2011-06-08 16:01:27

标签: c++ ofstream

未开启我的意思是:

ofstream outFile;
outFile << "Some text";

所以我将文字放在ofstream中,而不调用.open()方法。 g ++没有抱怨,所以也许我仍然可以保存数据?怎么样?

3 个答案:

答案 0 :(得分:7)

执行此操作后,流将处于失败状态(outFile.fail()将为true)。文本没有存储在任何地方,所以不,你不能保存它。

如果您想将数据存储在内存中,请使用std::ostringstream(来自<sstream>标题)。

答案 1 :(得分:3)

g ++没有抱怨,因为它是一个编译器并且没有运行代码,但运行它可能会导致一些令人讨厌的事情。

同样地,如果你试图取消引用NULL指针,g ++就不会抱怨。

答案 2 :(得分:0)

当带有流的操作失败时,流会在内部将错误存储为bits,表示eof,失败和错误。如果您使用ios::exceptions()将其设置为

,则该流也会引发异常

iostream库的部分设计似乎是使用处于错误状态的流将静默地丢弃输出和/或不产生任何输入,但不会警告用户。这样做的好处是你可以使用流执行多个操作,然后在最后检查它,相信如果它在中间的某个地方失败,它仍然处于失败状态,并且自从没有产生任何东西它失败了。