一段C++通讯录的代码 谁能帮我注释下

一段C++通讯录的代码 谁能帮我注释下 主要是删除的功能具体是在哪几句实现的 看不懂呀 谢了 我会再追加20的 最好详细点啊//删除联系人void book::del_person(){ ofstream outData("temp.txt", ios::out); ifstream inData("pbook.txt", ios::in); string sign; cout <<endl <<"你要删除输入姓名:"; cin >>sign; string str; while (inData >>name) { getline(inData, str); if (sign==name) { cout <<endl <<"你想删除的联系人:" <<endl <<endl; cout <<setiosflags(ios::left) <<setw(17) <<name <<" " <<number <<str <<endl; break; } outData <<setiosflags(ios::left) <<setw(17) <<name <<" " <<number <<str <<endl; } while (getline(inData, str)) { outData <<str <<endl; } outData.close();//关闭pbook.txt文件 inData.close();//关闭temp.txt文件 ofstream out("pbook.txt", ios::out); ifstream in("temp.txt", ios::in); if (!out || !in) { cout <<endl <<"对不起不能打开文件!!!" <<endl <<endl; system("pause"); return; } while (getline(in, str)) { out<<str <<endl; } out.close(); in.close(); cout <<endl <<"这个人的信息已经从你的通迅录中删除!!!" <<endl <<endl; } }
2026年09月23日 02:42
有2个网友回答
网友(1):

void book::del_person()
{
ofstream outData("temp.txt", ios::out);
ifstream inData("pbook.txt", ios::in);
string sign;
cout < cin >>sign;
string str;
//循环这样设计,那么每个person的信息必然是存储在每一行,而且第一个字符串是name
while (inData >>name)
//inData >>name :从inData读入一个字符串,直到遇到文件结束符其值才为假
{
getline(inData, str); //读取一行字符,然后文件指针指向下一行开头;
if (sign==name)
{
//如果删除的姓名匹配则将这个人信息输出
cout < cout < <<" " < break; //跳出循环
}
//程序没有跳出出循环说明姓名不匹配,然后将这些人信息存入临时文件
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 < system("pause");
return;
}
while (getline(in, str))
{
out< }
out.close();
in.close();
cout < }

}

网友(2):

void book::del_person()
{
ofstream outData("temp.txt", ios::out);
ifstream inData("pbook.txt", ios::in);
string sign;
cout < cin >>sign;
string str;
//第一个while相当于在文件中找到输入的姓名吧...
//找到后再屏幕和文件temp上打印name,number,str ,但没有删除啊
//下一个while,不断从pbook.txt中读入信息,并输出到temp.txt文件中,相当于复制吧。。好像也没有删除啊。。。
////hehe
while (inData >>name)
{
getline(inData, str);
if (sign==name)
{
cout < cout < <<" " < break;
}
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 < system("pause");
return;
}
while (getline(in, str))
{
out< }
out.close();
in.close();
cout < }

}