2

未开封我的意思是:

ofstream outFile;
outFile << "Some text";

所以我把文本放在一个ofstream没有调用.open()方法的地方。g++ 没有抱怨,所以也许我仍然可以保存数据?如何?

4

3 回答 3

7

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

如果要将数据存储在内存中,请改用std::ostringstream(来自<sstream>标头)。

于 2011-06-08T16:03:33.543 回答
3

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

同样,如果您尝试取消引用NULL指针,g++ 也不会抱怨。

于 2011-06-08T16:05:02.047 回答
0

当带有流的操作失败时,流在内部将错误存储为表示 eof、fail 和 bad的位。如果您使用ios::exceptions()将其设置为,流也可能引发异常。

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

于 2012-01-25T23:12:53.933 回答