请问一个有关问题

请教一个问题#include iostream.h#include fstream.h#include cstdlibstructdonation{charname[20]

请教一个问题
#include <iostream.h>
#include <fstream.h>
#include <cstdlib>
struct   donation
{
char   name[20];
double   purse;
};
const   int   SIZE=60;
int   main()
{
int   number;
int   i=0,m=0;
char   filename[SIZE];
ifstream   inFile;
cout < < "Enter   name   of   data   file: ";
cin.getline(filename,SIZE);
        donation   *donor=new   donation[10];
        inFile.open(filename);
if(!inFile.is_open())
{
cout < < "Could   not   open   the   file   " < <filename < <endl;
cout < < "Program   terminating.\n ";
exit(EXIT_FAILURE);
}
inFile> > number;

while(inFile.good())
{
                  //inFile> > donor[m].name;
inFile.getline(donor[m].name,20);//为什么用这句代替前一句就不行??
inFile> > donor[m].purse;
m++;
}
if(inFile.eof())

cout < < "End   of   file   reached.\n ";
       
else   if(inFile.fail())

cout < < "Input   terminated   by   data   mismatch.\n ";

else

cout < < "Input   termidated   by   unknow   reason.\n ";


/*cout < < "Please   enter   name.\n ";
cin> > donor[i].name;
cout < < "Please   enter   purse.\n ";
cin> > donor[i].purse;*/

int   j=0;
cout < < "Grand   Patrons: ";
for(i=0;i <m;i++)
{
if(donor[i].purse> 10000)
{j=1;
cout < <donor[i].name < < "   ";
}

}
        if(j==0)
cout < < "None. " < <endl;
int   k=0;
cout < < "Patrons: ";
for(i=0;i <m;i++)
{
if(donor[i].purse <10000)
{k=1;
cout < <donor[i].name < < "   ";
}

}
if(k==0)
cout < < "None. " < <endl;
delete[]   donor;
inFile.close();
cin.get();
cin.get();
return   0;
}

文件内容
data.txt
5
Sam     sam
2000
Freida
10050
Tammy
5000
Rich
55000
leke
60000

[解决办法]
//inFile> > donor[m].name;
输入到空格tab等都会停止
getline一般默认输入到 '\n '
[解决办法]
getline原型为getline(&istream,&string,char)
getline(输入流,存储变量,读取结束字符(缺省为回车换行符))