如果我有一个包含10行的文件,其中每行包含有关以下对象的信息,
class student
{
public:
string name;
int age;
int rollnum;
int year;
string father;
string mother;
string category;
string region;
char sex;
string branch;
int semester;
};
如何从文件中读取所有10个对象信息? (我猜我将不得不为此采取10个对象的数组)
答案 0 :(得分:0)
istream& operator >>(istream& in, student& val) {
return in >> name >> age >> rollnum >> year; // ...
}
然后你可以这样做:
for (string line; getline(infile, line); ) {
istringstream stream(line);
student person;
stream >> person;
}
现在每个人都会填充一次。我是这样做的,而不是直接从文件流式传输,因为这种方式更安全:如果一行有错误的令牌数量,它不会误解列是什么,而没有getline()你可能天真地解析10个令牌11令牌行,然后认为该行的第11个令牌是下一个记录的第一个令牌。只是初学者C ++文本解析代码中发生的典型错误。