C++程序 从文件中删除给定行号
已知一个文件和一个行号n,任务是从给定文本文件中删除第n行。
假设myfile.txt的初始内容为:
GeeksforGeeks
GeeksforGeeks IDE
GeeksforGeeks Practice
GeeksforGeeks Contribute
删除第二行后,内容将变为:
GeeksforGeeks
GeeksforGeeks IDE
GeeksforGeeks Contribute
方法:
1) 以输入模式打开源文件并逐字符读取它。
2) 以输出模式打开另一个文件,并逐字符放置文件中的内容。
3) 将另一个文件重命名为源文件。
//C++程序,用于删除给定文件中的
//行号
#include <bits/stdc++.h>
using namespace std;
//从给定文件中删除第n行
void delete_line(const char *file_name, int n)
{
//以读取模式或模式打开文件
ifstream is(file_name);
//以写模式或输出模式打开文件
ofstream ofs;
ofs.open("temp.txt", ofstream::out);
//循环获取单个字符
char c;
int line_no = 1;
while (is.get(c))
{
//如果是换行符
if (c == '\n')
line_no++;
//不删除文件内容
if (line_no != n)
ofs << c;
}
//关闭输出文件
ofs.close();
//关闭输入文件
is.close();
//删除原始文件
remove(file_name);
//重命名文件
rename("temp.txt", file_name);
}
//主程序
int main()
{
int n = 3;
delete_line("a.txt", n);
return 0;
}