gpt4 book ai didi

c++ - 仅覆盖文件的特定部分

转载 作者:搜寻专家 更新时间:2023-10-31 01:57:32 25 4
gpt4 key购买 nike

我知道这是 asked once ,但我不明白答案。

假设我有这样一个文件:

Guest list:
jon
mary
paul
luke
Table list:

然后,例如,我想更改客人的姓名。我知道我需要搜索字符串“Guest list”,然后覆盖“Guest list”和“Table list”之间的所有内容。但我不知道该怎么做。

我正在使用 C++,而且我更喜欢使用 fstream :D

谢谢!

编辑:

对于相对较小的文件,似乎写一个全新的文件是最好的方法。我可能会将此方法用于我现在想做的事情。但我仍然对如何处理需要更新大文件的情况很感兴趣。

最佳答案

如果新 guest 名称的长度与旧 guest 名称的长度不完全匹配,则无法就地执行替换,最好使用临时文件。

  • 逐行阅读原始文件,直到找到“Guest list:”分隔符,将每一行复制到临时文件。
  • 将新 guest 列表写入临时文件。
  • 从原始文件中读取行,直到找到“表列表:”分隔符。
  • 逐行读取原始文件直到结束,将每一行复制到临时文件。
  • 删除原始文件。 (或者重命名它,在其名称中添加一个备份扩展名。)
  • 将临时文件重命名为原始文件的名称。

关于c++ - 仅覆盖文件的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5487122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com