我有一个代码来添加,删除和显示员工ID,姓名,年龄和地点的员工记录。 但我无法编写删除功能
我的代码如下:
<?xml version="1.0" encoding="utf-16"?>
<Employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<EmployeeId xsi:nil="true" />
</Employee>
答案 0 :(得分:4)
简单的方法是按员工ID删除。您只需询问员工ID,即可了解要删除的员工。
然后,您无法删除顺序文件中间的行,因此您只需
document.back
document.txt
document.back
并将所有员工复制到document.txt
,但要删除的人除外document.back
这就是全部...除了通常的IO错误测试,备份文件存在等等......
我测试了你的代码。首先,您忘记在方法int Document::No_of_lines()
中关闭文档。接下来在我的MSVC2008上,我必须在到达文件末尾后明确地调用document.clear()
。您也不会在document
之后立即测试getline
,这意味着您在读取错误后执行代码。
我从newdocument
课程中删除了Document
,因为恕我直言,这是无用的。以下是Delete
:
void Document::Delete()
{
Document d2;
Display();
int num;
document.open("document.txt");
document.clear();
d2.document.open("newdocument.txt", ios::out | ios::trunc);
cout << "Enter the ID to delete \n";
cin >> idtodelete;
while (document.good())
{
getline(document, data);
if (document) {
int n = 0;
istringstream(data) >> num;
if (num != idtodelete)
{
d2.document << data << endl;
}
}
}
document.close();
d2.document.close();
remove("document.txt");
rename("newdocument.txt", "document.txt");
}