一段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;
}

}

void book::del_person()
{
ofstream outData("temp.txt", ios::out);
ifstream inData("pbook.txt", ios::in);
string sign;
cout <<endl <<"你要删除输入姓名:";
cin >>sign;
string str;
//循环这样设计,那么每个person的信息必然是存储在每一行,而且第一个字符串是name
while (inData >>name)
//inData >>name :从inData读入一个字符串,直到遇到文件结束符其值才为假
{
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))
//这是一段无用代码,而且也不会执行,因为inData的文件指针已经指向文件尾了
{
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;
}

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-08
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相当于在文件中找到输入的姓名吧...
//找到后再屏幕和文件temp上打印name,number,str ,但没有删除啊
//下一个while,不断从pbook.txt中读入信息,并输出到temp.txt文件中,相当于复制吧。。好像也没有删除啊。。。
////hehe
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;
}

}
相似回答