【发布时间】:2022-01-22 06:15:48
【问题描述】:
我有这段代码,我想在我的向量中找到一个单词并删除包含该单词的项目,但是我的代码将从第一行删除直到我想要的项目,我该如何解决?
std::string s;
std::vector<std::string> lines;
while (std::getline(theFile, s))
{
lines.push_back(s);
}
//finding item in vector and changing it
for (unsigned i = 0; i < lines.size(); i++)
{
std::size_t found = lines[i].find(name);
if (found != std::string::npos)
{
lines.erase(lines.begin() + i);
}
}
更新 1:
这是我的完整代码: 我正在打开一个包含这种格式的一些元素的文件 (大卫,2002 年,1041 年,1957 年) ( 克莱夫, 2003 , 1071 , 1517 ) (阿里,2005 年,1021 年,1937 年) 我正在获取用户输入并找到包含它的行。然后我想完全删除那条线,所以我将它导入一个向量,然后我不能修改它
#include <iostream>
#include <string>
#include <vector>
#include <stream>
#include <algorithm>
using namespace std;
using std::vector;
int main(){
string srch;
string line;
fstream Myfile;
string name;
int counter;
Myfile.open("Patientlist.txt", ios::in | ios::out);
cout <<"Deleting your Account";
cout << "\nEnter your ID: ";
cin.ignore();
getline(cin, srch);
if (Myfile.is_open())
{
while (getline(Myfile, line))
{
if (line.find(srch) != string::npos)
{
cout << "\nYour details are: \n"
<< line << endl;
}
break;
}
}
else
{
cout << "\nSearch Failed... Patient not found!" << endl;
}
Myfile.close();
ifstream theFile("Patientlist.txt");
//using vectors to store value of file
std::string s;
std::vector<std::string> lines;
while (std::getline(theFile, s))
{
lines.push_back(s);
}
//finding item in vector and changing it
for (unsigned i = 0; i < lines.size(); i++)
{
std::size_t found = lines[i].find(name);
if (found != std::string::npos)
{
lines.erase(lines.begin() + i);
}
}
//writing new vector on file
ofstream file;
file.open("Patientlist.txt");
for (int i = 0; i < lines.size(); ++i)
{
file << lines[i] << endl;
}
file.close();
cout << "Done!";
}
【问题讨论】:
-
@RetiredNinja 我更新了帖子,请再次查看
-
@TedLyngmo 是的,答案非常有帮助,非常感谢。
-
太棒了!不客气!