首页 > 解决方案 > 如何在我从 C++ 文件中读取行后立即删除行

问题描述

我正在阅读如下文件:

#include <fstream>

std::ifstream infile("example.txt");
for (std::string line; std::getline(infile, line);)
{
  std::cout << line << std::endl;
}

现在,我想阅读该行并在阅读后删除该行。最后,example.txt应该是空的。我想知道是否有任何方法可以在 C++ 中做到这一点。

谢谢!

标签: c++

解决方案


您不能只从文件中删除一行。将文件想象成一个固定大小的数组,您无法擦除数组的第一个元素,因为它的内存仍然存在。您所能做的就是更改它包含的数据。也就是说,您可以做的是在阅读文件后,您可以通过使用std::ofstream. 默认情况下std::ofstream,如果文件不存在,a 将创建一个文件,如果存在,它将删除它并给你一个空白文件。那看起来像

int main()
{
    std::ifstream infile("example.txt");
    for (std::string line; std::getline(infile, line);)
    {
      std::cout << line << std::endl;
    }
            Infile.close()
    std::ofstream{"example.txt"}; // erase the contents
}

推荐阅读