C++ 输入输出流

C++ 输入输出流,c++,iostream,C++,Iostream,打开文件的输入流是否安全,而打开同一文件的输出流(但不写入)是否安全 (单螺纹)这可能是“不安全的”,就像骑自行车不戴头盔是不安全的一样。事情可能更容易出错,但如果你聪明谨慎,那就没关系了。然而,实际上并不需要这样做,您可以在想要读入时简单地关闭输出流,然后在完成阅读后重新打开它。这可能是“不安全的”,就像骑自行车不戴头盔是不安全的一样。事情可能更容易出错,但如果你聪明谨慎,那就没关系了。但是,实际上不需要这样做,您可以在需要读入时简单地关闭输出流,然后在完成读入后重新打开它。部分取决于系统。系

打开文件的输入流是否安全,而打开同一文件的输出流(但不写入)是否安全
(单螺纹)

这可能是“不安全的”,就像骑自行车不戴头盔是不安全的一样。事情可能更容易出错,但如果你聪明谨慎,那就没关系了。然而,实际上并不需要这样做,您可以在想要读入时简单地关闭输出流,然后在完成阅读后重新打开它。

这可能是“不安全的”,就像骑自行车不戴头盔是不安全的一样。事情可能更容易出错,但如果你聪明谨慎,那就没关系了。但是,实际上不需要这样做,您可以在需要读入时简单地关闭输出流,然后在完成读入后重新打开它。

部分取决于系统。系统可能不允许这样做。除此之外,一旦您打开了一个流进行写入,并且在同一个文件上打开了多个流(无论方向如何),您就必须担心缓冲。在您的情况下,如果在打开流进行读取之前进行刷新,并且在读取时不进行写入,则应该可以。如果您试图写入并读取最后一次写入的内容,则会更加困难,因为您无法将读取缓冲区与文件重新同步。如果你试图通过两个不同的流来写,问题就更大了。(虽然如果写入操作总是附加在末尾,并且您可以在刷新时进行安排,但使用
std::ios_base::app
打开文件应该可以做到这一点。但这无助于读取。)

部分取决于系统。系统可能不允许这样做。除此之外,一旦您打开了一个流进行写入,并且在同一个文件上打开了多个流(无论方向如何),您就必须担心缓冲。在您的情况下,如果在打开流进行读取之前进行刷新,并且在读取时不进行写入,则应该可以。如果您试图写入并读取最后一次写入的内容,则会更加困难,因为您无法将读取缓冲区与文件重新同步。如果你试图通过两个不同的流来写,问题就更大了。(虽然如果写入操作总是附加在末尾,并且您可以在刷新时进行安排,但使用
std::ios_base::app
打开文件应该可以做到这一点。但这无助于读取。)

如果不向文件写入,为什么要打开文件的输出流?我有一个类可以向日志文件写入数据,我想保持流的打开状态,以便随时向日志文件写入数据。我还希望每隔一段时间打开一次输入流,以检查日志文件的大小。如果不向文件写入,为什么要打开文件的输出流?我有一个类可以写入日志文件,我希望保持流打开,以便随时向日志文件写入。我还希望每隔一段时间打开一个输入流,以检查日志文件的大小。