【问题标题】:Removing an entry inside a file using C++使用 C++ 删除文件中的条目
【发布时间】:2016-07-25 14:39:26
【问题描述】:

我在这个文件中使用 CPP 中的 fstream 命令创建了一个 txt 文件,我插入了学生的姓名,但是如果我想删除特定学生的信息,而不是整个文件,是否有可能以及如何做到这一点.. 谢谢提前...我不想跳到某一行,但我想删除特定行

【问题讨论】:

  • 重复。您的答案在其中一篇帖子中:stackoverflow.com/questions/5207550/…
  • 在某些时候,您应该放心并使用适当的数据库。甚至SQLite 也比制作自己的黑客怪物要好。
  • @FirstStep 我的问题和您共享的链接不同,链接显示到特定行,我想删除一行..

标签: c++ fstream file-handling


【解决方案1】:
1。逐一读取文件中的所有记录
2. if (read_record==record_to be deleted)
跳过
3. 其他
将记录写入新的临时文件
4. 重复步骤 2 到 3 直到读取所有文件
5.现在删除原始文件
6. 将临时文件重命名为原名

【讨论】:

    【解决方案2】:

    这里有一些方法:

    1. 将所有“好”记录写入新文件,省略已删除的内容。
    2. 用“\0”标记(覆盖)文本以指示已删除的记录。
    3. 以读/写方式打开文件并移动删除后的所有文本 文本,因此它会覆盖已删除的文本(考虑在 数组)。

    删除文本或数据时文件不会自动缩小;它们保持相同的大小(将它们视为数组)。

    【讨论】:

    • 我会添加一个布尔值deleted 字段。
    • @ZDF:取决于数据格式。通常,布尔字段不是逗号分隔或以换行符结尾的文本文件中的最佳解决方案。
    猜你喜欢
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多