请教一个问题
#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(输入流,存储变量,读取结束字符(缺省为回车换行符))
请问一个有关问题
请教一个问题#include iostream.h#include fstream.h#include cstdlibstructdonation{charname[20]
