void del_book()
{
//我会一种比较笨的办法:
//建立一个临时文件,然后从原文件读取图书信息,把要删除的项不写入临时文件,其他全部写入。
//全部读写完成后,改变两个文件的读写状态,把临时文件的内容全部覆盖写入原文件
ofstream outData("temp.txt", ios::out);
ifstream inData("d:\\bookInfo.txt", ios::in);
if (!outData || !inData)
{
cout <<endl <<"对不起!!!!找不到文件!!!!" <<endl;
system("pause");
return;
}
string sign;
cout <<endl <<"你要删除的图书名或者图书号:"; //其他的图书属性也成
cin >>sign;
bool flag = true;
string str;
while (inData >>booknumber >>bookname)
{
getline(inData, str);
if ((sign==booknumber) || (sign==bookname))
{
cout <<endl <<"你想删除的图书:" <<endl <<endl;
cout <<setiosflags(ios::left) <<setw(5) <<booknumber
<<" " <<bookname<<str <<endl;
flag = false;
break;
}
outData <<setiosflags(ios::left) <<setw(5) <<booknumber
<<" " <<bookname <<str <<endl;
}
if (flag)
{
cout <<endl <<"对不起!!!没有该图书的信息!!!!" <<endl <<endl;
}
else
{
while (getline(inData, str))
{
outData <<str <<endl;
}
outData.close();
inData.close();
ofstream out("d:\\bookInfo.txt", ios::out);
ifstream in("temp.txt", ios::in);
if (!out || !in)
{
cout <<endl <<"对不起不能打开文件!!!" <<endl <<endl;
return;
}
while (getline(in, str))
{
out <<str <<endl;
}
out.close();
in.close();
cout <<endl <<"这本图书的信息已经删除!!!" <<endl <<endl;
}
}
温馨提示:答案为网友推荐,仅供参考