文件读取的问题
在学习文件的读写
遇到这样一个问题
一个文件的内容是
2
ABC
2000
QWE
200
然后我就在网上搜了下,发现这样才能正常读取
patrons为自定义结构
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;}
#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中。 */