最近看一道百度上的通讯录管理的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");
}
问题很多,请各位高手能一一回答,希望详细点,谢谢!
谢谢
但是我想问问2是如何实现的。7为什么要互换?
2的InData是一个ifstream ,读文件的流,就是把文件和InData关联上,从InData里读数据就是从文件里读,这是C++的标准输入输出流。
7互换的意思,你就要看代码要实现什么样的逻辑功能了,看代码的意思是要把删除了的数据保存到out关联的那个文件里