void book::del_person()
{
ofstream outData("temp.txt", ios::out);
ifstream inData("pbook.txt", ios::in);
string sign;
cout <
string str;
//循环这样设计,那么每个person的信息必然是存储在每一行,而且第一个字符串是name
while (inData >>name)
//inData >>name :从inData读入一个字符串,直到遇到文件结束符其值才为假
{
getline(inData, str); //读取一行字符,然后文件指针指向下一行开头;
if (sign==name)
{
//如果删除的姓名匹配则将这个人信息输出
cout <
}
//程序没有跳出出循环说明姓名不匹配,然后将这些人信息存入临时文件
outData <
while (getline(inData, str))
//这是一段无用代码,而且也不会执行,因为inData的文件指针已经指向文件尾了
{
outData <
outData.close();//关闭pbook.txt文件
inData.close();//关闭temp.txt文件
//下面就将临时文件中的记录重新输出到原始文件,因为临时文件中存放的都是不匹配的信 息,这样就达到了删除的效果
ofstream out("pbook.txt", ios::out);
ifstream in("temp.txt", ios::in);
if (!out || !in)
{
cout <
return;
}
while (getline(in, str))
{
out<
out.close();
in.close();
cout <
}
void book::del_person()
{
ofstream outData("temp.txt", ios::out);
ifstream inData("pbook.txt", ios::in);
string sign;
cout <
string str;
//第一个while相当于在文件中找到输入的姓名吧...
//找到后再屏幕和文件temp上打印name,number,str ,但没有删除啊
//下一个while,不断从pbook.txt中读入信息,并输出到temp.txt文件中,相当于复制吧。。好像也没有删除啊。。。
////hehe
while (inData >>name)
{
getline(inData, str);
if (sign==name)
{
cout <
}
outData <
while (getline(inData, str))
{
outData <
outData.close();//关闭pbook.txt文件
inData.close();//关闭temp.txt文件
ofstream out("pbook.txt", ios::out);
ifstream in("temp.txt", ios::in);
if (!out || !in)
{
cout <
return;
}
while (getline(in, str))
{
out<
out.close();
in.close();
cout <
}