c++ - 如何在我从 C++ 文件中读取行后立即删除行
问题描述
我正在阅读如下文件:
#include <fstream>
std::ifstream infile("example.txt");
for (std::string line; std::getline(infile, line);)
{
std::cout << line << std::endl;
}
现在,我想阅读该行并在阅读后删除该行。最后,example.txt
应该是空的。我想知道是否有任何方法可以在 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
}
推荐阅读
- ios - 即使保存在 Context 中,Core Data 也会返回 0 值
- python - python - 多类逻辑回归预测季节
- vue.js - Vue:创建钩子时出错:“TypeError:无法将未定义或空值转换为对象”
- javascript - JavaScript .play() 和 .pause() 不起作用
- c# - 看似没有错误的非工作 C# 代码
- node.js - 向 Mongoose 注册模型的正确方法
- swift - 如何在 RxSwift 中观察对象的属性?
- docker - Heroku 上的 .Net Core 与 Docker
- javascript - .click 功能在页面加载时触发
- asp.net-mvc - @Html.ActionLink 可以带 id 发送,在其他视图中查看 id