我想从文本文件中删除一些信息而不移动其所有记录。例如,给出了文本文件customers.txt
。它有很多由#
分隔符分隔的记录。每条记录包含以;
分隔的字段。像这样:1665;John;Smith
给定客户ID,我想删除具有相应ID的客户。我可以在文件中找到记录的偏移量和长度,但不知道如何删除它。我必须重写整个文件吗?
注意:我正在使用带有g ++ 4.5和libst4的标准C ++。
答案 0 :(得分:8)
你有几个选择。 1)重写文件的剩余部分,超过要删除的记录。 2)用一些指示符替换记录,将其删除并在解析文件时处理(如替换用#或其他特殊字符删除的条目)。
答案 1 :(得分:3)
是的,你必须重写整个文件。
我建议使用这个算法: