【问题标题】:C++ read and write to same file using different streamsC++ 使用不同的流读取和写入同一个文件
【发布时间】:2014-09-22 21:12:02
【问题描述】:

我有两个流指向同一个文件。第一个是std::ofstream os,第二个是std::ifstream is,都是二进制打开的。

我正在使用os 创建一个新文件。文件创建过程需要我(有时)读取os 写入文件的数据。 is 流寻找所需的位置,读取一些数据,然后 os 在其(不同的)偏移处执行它,然后刷新。

这样做合法吗?溪流会互相踩踏吗?

【问题讨论】:

  • 您可以使用is.tie(&os) 自动执行此操作,而不是在每次写入后刷新。

标签: c++ io


【解决方案1】:

不能引用任何标准,但是/因为这是特定于平台的
(可能是独占访问,不同级别的缓冲...)

您可以只使用一个 fstreamios::in|ios::out
并在每一个行动之前寻求。

【讨论】:

  • 我试图避免这种情况,因为它会在执行读取或写入时通过跳转(我需要维护堆栈的偏移量)使事情复杂化。我想我会看看这两个流版本是否在我的平台目标上凭经验工作。
猜你喜欢
  • 1970-01-01
  • 2019-03-04
  • 2016-02-11
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
相关资源
最近更新 更多