关于文件读取的一点小疑点

关于文件读取的一点小问题
#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();可以不?
------解决方案--------------------
fin.get()就是从fin中得到值,你可查下cin.get()的用法,它们差不多是一个意思,fin.getline(receive...)是从fin中得到一个字符串,并赋值给receive,总的来说就是从fin这个对象流中得到内容,只是一个是单个,而一个是一行