我的教授告诉我们创建一个能够添加,列出和删除员工记录的程序,我的问题是我不知道如何从文件中删除记录。我正在使用的代码是它只复制原始文件的内容而不是新内容。
这是我的代码:
string del;
string line;
ifstream in("sample.txt");
if (!in.is_open()) {
cout << "Input file failed to open\n";
}
ofstream out("temp.txt")`enter code here`;
cout << "Please Enter the Employee No. to delete" << endl;
cin >> del;
while (getline(in, line)) {
if (line != del)
out << line << endl;
}
in.close();
out.close();
remove("sample.txt");
rename("temp.txt", "sample.txt");
答案 0 :(得分:0)
我不知道如何从文件中删除记录。我正在使用的代码是它只复制原始文件的内容而不是新内容。
您无法从文本文件中删除特定行。您只能重写相同的内容,直到要删除到另一个文件的行,跳过要删除的行,继续写其余内容。
完成后,删除原始文件并将新文件重命名为原始文件。
你的代码正在做同样的事情,没关系。
另一种选择是将当前文件内容存储在诸如Vector之类的数据结构中。进行更改,例如删除/添加数据结构。
然后将数据结构的内容写回文件。
答案 1 :(得分:-1)
删除&#39;的一种常见方法。文件中的东西实际上根本不是删除它们,而是设置一个标记来表示它们被删除或者以另一种方式将它们删除。例如,可以使用格式
<valid>:<number>:<name>
eg 1:123:Dave
然后可以通过将前导1设置为0来删除它。
然后,您可以重写该文件,并在以后删除所有已删除的文件。 另一种方法是用空格填充该行,并允许程序跳过空白行。
答案 2 :(得分:-1)
您需要读取文件并存储在数据结构中,然后执行删除操作并将数据发送到原始文件。
for(int i=0;i<size;i++)
{
infile>>vectorObject[i];
}
cin>>del;
remove(vectorObject[del-1]);
for(int i=0;i<size;i++)
{
outfile<<vectorObject[i];
}
根据你的问题,这将有效。