关于文件读取的一点小问题

二胖小哥 2014-04-12 03:25:42
#include <iostream>
#include <fstream>
#include <cstdlib>

struct member
{
char name[20];
double donation;
};

int main()
{
using namespace std;
int num,count1=0,count2=0;
ifstream fin;
char file[20];
cout<<"Enter name of data file: ";
cin.getline(file,20);
fin.open(file);
if(!fin.is_open())
{
cout<<"Could not open the file-"<<file<<endl;
cout<<"Program terminating.\n";
exit(EXIT_FAILURE);
}
fin>>num;
fin.get();

member *pd=new member[num];
for(int i=0;i<num;i++)
{
fin.getline(pd[i].name,20);
fin>>pd[i].donation;
fin.get();

}
cout<<"Grand Patrons:\n";
for(int i=0;i<num;i++)
if(pd[i].donation>=10000)
{
cout<<pd[i].name<<"\n"<<pd[i].donation<<endl;
count1++;
}
if(count1==0)
cout<<"none\n";
cout<<"Patrons:\n";
for(int i=0;i<num;i++)
if(pd[i].donation<10000)
{
cout<<pd[i].name<<"\n"<<pd[i].donation<<endl;
count2++;
}
if(count2==0)
cout<<"none\n";

delete [] pd;
cin.get();
return 0;
}

文件里面是这样的
4
wang
12121
liu
230000
zhang
2222
程序的目的是找出结构体中大于20000的信息,并分成两种输出。
我不明白的是红色字体的地方,后面那个cin.get();是干啥的?为什么字符型的时候就不用了呢?整型的时候也用cin.getline();可以不?
...全文
150 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
1楼 正解
「已注销」 2014-04-12
  • 打赏
  • 举报
回复
fin.get()就是从fin中得到值,你可查下cin.get()的用法,它们差不多是一个意思,fin.getline(receive...)是从fin中得到一个字符串,并赋值给receive,总的来说就是从fin这个对象流中得到内容,只是一个是单个,而一个是一行

64,680

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧