【问题标题】:how to overwrite a particular data in file using c++如何使用c ++覆盖文件中的特定数据
【发布时间】:2013-09-14 04:29:10
【问题描述】:

我在覆盖 C++ 中特定位置的文件时遇到问题。我已经使用ios::app|ios::binary 打开了我的文件。然后我寻找我想要覆盖的那个位置。但我没有覆盖它,而是从文件末尾追加。有什么建议吗?

【问题讨论】:

  • 你认为ios::app 是做什么的?
  • 去掉 ios::app 选项?
  • 关于ios_base::app (§27.5.3.1.4):seek to end before each write
  • 如果删除它会覆盖整个文件。

标签: c++


【解决方案1】:

您需要指定ios::inios::out。如果您只有 ios::outofstream 中的默认值),它将覆盖。如ios::app 所述,表示数据被写入文件末尾,这不是您想要的。

【讨论】:

    【解决方案2】:

    您可以使用 ios::in|ios::out|ios::binary 打开文件。之后,您应该在写入之前使用 seekp() 查找文件的所需位置。

    【讨论】:

    • 只使用ios::out会清空文件,你需要ios::in来防止文件被清空(或者ios::app如果你想只写到最后。
    猜你喜欢
    • 1970-01-01
    • 2013-01-10
    • 2017-12-11
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 2019-05-22
    相关资源
    最近更新 更多