请简述以下代码的操作

来源:百度知道 编辑:UC知道 时间:2024/07/02 16:39:25
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{
ifstream inData;
ofstream outData;
string mailaddress;
string::size_type pos;
outData.open ("addresses.dat");
inData.open ("mail.dat");
if (!inData)
{
cout<<"Cannot open the input file!"<<endl;
return 1;
}
do
{
inData>>mailaddress;
pos=mailaddress.find ('@');
if(pos>=0 && pos<10000000)
outData<<mailaddress<<endl;
}while(inData);
cout<<"Complete!"<<endl;
return 0;
}

这个应该是要做一个电话簿程序。

在上述代码中,对文件流inData进行读,对文件流outData进行写。

下列语句:
inData.open ("mail.dat");
outData.open ("addresses.dat");

这两个都是函数调用。
第一条语句是一个对名为open函数的调用,这个open与ifstream 数据类型联系在一起,第二条语句是对另一个与ofstream联系在一起的函数(也称为open函数)的调用。

本代码的具体作用就是:
将“mail.dat”中的@前的字符串,输出到addresses.dat中

但是你的代码有一些问题:
1. 在代码结束前,未进行Close操作,应该增加如下处理:
inputData.close();
outData.close();

2. do while的判断条件不太精确,
最好在制作mail.dat时,自行增加一下文件结尾符,这样比简单的进行如下判断安全:while(inData);
例如,如果使用.txt作为input的话,我们一般使用inputData.eof()是否满足作为判断循环结束的条件。