我怎样才能删除字符串上方的一行?例如,我打开一个文本文件并进行编辑。我的程序的工作方式是用户输入教师姓名。 “John Doe先生”然后从搜索到的名称中删除接下来的7行。在“Courses”和“endInstructor”之间查找所有内容并删除它,但剩下的就是搜索到的名称上面的两个字符串,即“loginpw123”和“startInstructor”。
现在我的问题是,在删除其他所有内容之后,我将如何删除这两行,因为每个教授都有不同之处,而且列表上有大约20个配置文件。
以下是代码:
int main()
{
ifstream myfile("instructor.csv");
ofstream myfile2("outfile.csv");
string line;
string dropInstructor;
bool notFound = false;
cout << "Enter Instructor to drop by name: ";
getline(cin, dropInstructor);
while (getline(myfile, line))
{
if (line != dropInstructor)
{
myfile2 << line << endl;
}
if (line == dropInstructor)
{
myfile2 << "";
for (int i = 0; i < 7; i++)
{
getline(myfile, line);
myfile2 << "";
}
getline(myfile, line);
if (line == "Courses:")
{
myfile2 << "";
while (getline(myfile, line))
{
if (line == "endInstructor")
{
myfile2 << "";
break;
}
myfile2 << "tempp";
}
/*for (int i = 0; i < 4; i++)
{
getline(myfile, line);
myfile2 << "";
}*/
}
}
}
/*if (!notFound)
{
cout << "Not found" << endl;
cin.get();
// client ->sendToClient("Not Found");
}*/
myfile.close();
myfile2.close();
remove("instructor.csv");
rename("outfile.csv", "instructor.csv");
}
文本文件:
loginpw123
startInstructor
Mr. John Doe
755 Teacher St
532 791 3761
johndoe@schoolname.ca
392817
03/02/1988
Male
777777
Courses:
Courseinfo1
Courseinfo2
Courseinfo3
Courseinfo4
Courseinfo5
endInstructor
答案 0 :(得分:1)
在确定他们是否属于正在删除的教授之前,您是将前两行复制到新文件中(为什么startProfessor
之上的行不在startProfessor
/ {之间? {1}}而是?)。您需要暂时将第一行保存在内存中,然后检查教授,如果不匹配,则将与教授相关的所有行写入新文件。
尝试这样的事情:
endProfessor