gpt4 book ai didi

c++ - 在 C++ 中删除文件最后一行的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-04 15:42:26 26 4
gpt4 key购买 nike

我目前正在使用以下代码删除 .txt 文件的最后一行。它有效,但速度很慢。我可以做些什么来优化这段代码?

string line; 
vector<string> lines;
std::ifstream inputStream("example.txt");

while (getline(inputStream,line)) {
lines.push_back(line);
}
inputStream.close();

std::fstream outputStream("example.txt", ios::out | ios::trunc);
if (outputStream.is_open())
{
for (int i=0; i < lines.size()-2; i++)
{
outputStream << lines[i] << "\n";
}
outputStream.close();
}

最佳答案

根据文件的大小,您可能会发现从末尾(以 block 为单位)实际读取文件并保存最后一行的位置会更快。然后,您可以从头开始复制文件的一部分到所需位置。这样,您就不必执行那么多 IO 操作。

所以实际的算法应该是这样的:

  1. 打开文件
  2. 将读指针放在最后-chunkSize
  3. 读取 chunkSize 字节的数据
  4. 如果有换行符,存储位置,否则返回3。
  5. 复制从头到位置的内容

关于c++ - 在 C++ 中删除文件最后一行的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21082171/

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