文件读取的有关问题

文件读取的问题
在学习文件的读写
遇到这样一个问题
一个文件的内容是
2
ABC
2000
QWE
200
然后我就在网上搜了下,发现这样才能正常读取
patrons为自定义结构
C/C++ code
inFile>>number;
Patron * patrons = new Patron[number];
for (int i=0; i<number; ++i)
{
inFile.get();
getline(inFile, patrons[i].name);
inFile>>patrons[i].donations;
}

我有几点不明白
1.inFile.get();表示什么意思?
2.getline(inFile, patrons[i].name);又表示什么?是不是和cin.geiline()是一样的效果?
3.不看上面的,如何逐行读取?
谢谢各位了

------解决方案--------------------
inFile.get();获得一个字符,一般输入的时候回车符还停留在缓冲区,所以为了能够正确的获得数据就必须先获得一个字符,其实这个字符就是回车符。
getline(inFile, patrons[i].name);和cin.getline差不多的,只不过获得的来源不一样而已。
------解决方案--------------------
C/C++ code
#include <iostream>    // 数据流输入/输出
#include <string>      // 字符串类
using namespace std;

struct Patron {
    string name;
    int donations;
};

int main()
{
    fstream inFile("a.txt", fstream::in);
    int number;
    inFile >> number;
    Patron * patrons = new Patron[number];

    for (int i = 0; i!= number; ++i) {
        inFile.get(); // 主要功能是跳过第一行末尾的换行
        getline(inFile, patrons[i].name);
        inFile >> patrons[i].donations;
        cout << patrons[i].name << "\t" << patrons[i].donations << endl;
    }
    return 0;
}
/* 
 * get
 * 语法:
 * int get();
 * istream &get( char &ch );
 * istream &get( char *buffer, streamsize num );
 * istream &get( char *buffer, streamsize num, char delim );
 * istream &get( streambuf &buffer );
 * istream &get( streambuf &buffer, char delim );
 * 
 * get()函数被用于输入流,和以下这些:
 * 
 * 读入一个字符并返回它的值,
 * 读入一个字符并把它存储在ch,
 * 读取字符到buffer直到num - 1个字符被读入, 或者碰到EOF或换行标志,
 * 读取字符到buffer直到已读入num - 1 个字符,或者碰到EOF或delim(delim直到下一次不会被读取),
 * 读取字符到buffer中,直到碰到换行或EOF,
 * 或是读取字符到buffer中,直到碰到换行,EOF或delim。(相反, delim直到下一个get()不会被读取 ).
 * 
 */

/* getline 
 * 语法: 
 *   istream &getline( char *buffer, streamsize num );
 *   istream &getline( char *buffer, streamsize num, char delim );
 * 
 * getline()函数用于输入流,读取字符到buffer中,直到下列情况发生: 
 * 
 * num - 1个字符已经读入, 
 * 碰到一个换行标志,
 * 碰到一个EOF, 
 * 或者,任意地读入,直到读到字符delim。delim字符不会被放入buffer中。 
 */