gpt4 book ai didi

c++ - 如何在C++中删除文本文件中的特定行

转载 作者:行者123 更新时间:2023-12-01 14:40:11 25 4
gpt4 key购买 nike

我正在尝试使用c++删除文本文件内的一行。例如,我有一个包含文本的.txt文件:

booking.txt

1 jer 34 r er
2 43 45 34 456
3 2 4 5 6
4 45 546 435 34
5 cottage 1 323 23
6 we we r we
7 23 34 345 345
8 wer wer wer we

我想在满足特定条件时删除一行。假设我要删除第三行,则必须从.txt文件中删除ID为3的行。

我的代码:
void DeleteLine(string filename)
{
string deleteline;
string line;

ifstream fin;
fin.open(filename);
ofstream temp;
temp.open("temp.txt");
cout << "Input index to remove [0 based index]: "; //input line to remove
cin >> deleteline;

while (getline(fin, line))
{
line.replace(line.find(deleteline), deleteline.length(), "");
temp << line << endl;
}

temp.close();
fin.close();
remove("cottage.txt");
rename("temp.txt", "cottage.txt");
}

但给我以下结果:
1 jer 4 r er
2 4 45 34 456
2 4 5 6
4 45 546 45 34
5 cottage 1 23 23

最佳答案

当前,您仅删除每行中第一次出现的deleteline。要删除以deleteline开头的整行,您必须替换

line.replace(line.find(deleteline), deleteline.length(), "");
temp << line << endl;


std::string id(line.begin(), line.begin() + line.find(" "));
if (id != deleteline)
temp << line << endl;

关于c++ - 如何在C++中删除文本文件中的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59299107/

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