【发布时间】:2012-05-21 13:12:20
【问题描述】:
我有一个大文本文件。
每次我的程序运行时,它都需要读取第一行,将其删除,然后将该数据放回文件底部。
有没有一种方法可以完成这项任务而无需读取文件的每个部分?
遵循这个伪代码示例会很棒:
1. Open file stream for reading/writing 2. data = first line of file 3. remove first line from file <-- can I do this? 4. Close file stream 5. Open file stream for appending 6. write data to file 7. Close file stream
我试图避免阅读所有内容的原因是因为程序在每天的特定时间运行。我不希望每次文件变大时延迟都会变长。
我发现的所有解决方案都要求程序处理整个文件。如果 C++ 文件流无法做到这一点,我会选择任何可以快速有效地执行 C++ 程序的替代方案。
谢谢。
【问题讨论】:
-
你的文件中有空格的概念吗?将线条涂白而不是完全去除是否可行?
-
@Potatoswatter 我可以这样做,但问题仍然存在。每次我都会在文件顶部多出一行空白。我尝试将退格键写入文件,但它们仍然作为字符显示在文件中。我想欧内斯特建议的数据库是最好的方法。那,或者可能是一个单独的线程来减少时间。
标签: c++ c++11 filestream fstream getline