请求各位C++高手能进来解答一下!!我很急!!!

最近看一道百度上的通讯录管理的C++程序,里面有一些问题向各位请教下,希望帮忙。

程序如下,我把不懂的问题注释在程序旁边,每个问题都有序号,可以分序号回答。

求解答,求帮忙!!!

void book::del_person()
{
ofstream outData("temp.txt", ios::out);
ifstream inData("pbook.txt", ios::in);
if (!outData || !inData)
{
cout <<endl <<"对不起!!!!找不到文件!!!!" <<endl;
system("pause");
return;
}

string sign;
cout <<endl <<"你要删除输入姓名或电话号:";
cin >>sign;
string str1; // 1。在此处定义Str1 是干嘛用?
string str;
bool flag = true;
while (inData >>name >>number) // 2。<<的作用是什么,这句话是实现什么功能?
{
getline(inData, str);// 3。这句话实现什么功能?为什么用inData?

if ((sign==name) || (sign==number))
{
cout <<endl <<"你想删除的联系人:" <<endl <<endl;
cout <<str1 <<endl;// 4。这个cout是什么作用?我觉得这句没什么作用啊
cout <<setiosflags(ios::left) <<setw(17) <<name
<<" " <<number <<str <<endl;//5。这句跟下句有什么区别?功能作用是?
flag = false;
break;
}

outData <<setiosflags(ios::left) <<setw(17) <<name
<<" " <<number <<str <<endl;//5。这句跟上句有什么区别?功能作用是?
}

if (flag)
{
cout <<endl <<"对不起!!!联系人中没你找的人!!!!" <<endl <<endl;
}
else
{
while (getline(inData, str))//6。这句又是做什么用?
{
outData <<str <<endl;//6。还有这句又是干什么用?
}

outData.close();
inData.close();

ofstream out("pbook.txt", ios::out);//7。为什么要定义新的文件流?
ifstream in("temp.txt", ios::in);//7。同上的问题!

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

system("pause");
}

问题很多,请各位高手能一一回答,希望详细点,谢谢!

1,str1没用到
2,从pbook.txt里读名字和号码
3,从pbook.txt读取一行,赋给str,InData是文件流,用来读文件的,getline(inData, str);就相当于从inData所关联的文件里读一样,也就是从pbook.txt读取一行。
4,也没用了
5,上面那句是输出到屏幕,下面看似一样,其实是输出到文件里,它用的OutData,就是写到OutData关联的那个文件里。
6,上面都解释过了
7,仔细看,流所关联的文件互换了~~
明白了吧
建议你看看C++的标准输入输出流,看看就明白这些了,都很简单追问

谢谢
但是我想问问2是如何实现的。7为什么要互换?

追答

2的InData是一个ifstream ,读文件的流,就是把文件和InData关联上,从InData里读数据就是从文件里读,这是C++的标准输入输出流。
7互换的意思,你就要看代码要实现什么样的逻辑功能了,看代码的意思是要把删除了的数据保存到out关联的那个文件里

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答