有没有一种高效的C或C ++方法来读取CSV文件的最后一行?天真的方法涉及读入整个文件,然后到达末尾。是否有更快的方法可以完成此操作(特别是如果CSV文件很大)?
您可以使用 Perl 模块 File::ReadBackwards。
用什么和在什么上读取?在Unix系统上,如果你想要最后一行,那就很简单了。
tail -n1 file.csv
system("tail -n1 file.csv")
如果你想要一种快速而简单的方法来完成这个任务。你的问题与在文件中搜索字符串的领域相同。正如你所指出的那样,将整个文件读入内存然后搜索字符串并不总是一个好主意。但你可以做下一个最好的事情。将文件映射到内存中。然后使用字符串搜索函数从字符串末尾向后搜索换行符。
这是一种极其高效的机制,具有最小的内存占用和最佳的磁盘I/O。
fgets
,C++ 中是std::getline
。 - Thomas Matthews