用c ++从文件中读取对象

时间:2014-08-30 14:26:47

标签: c++

如果我有一个包含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个对象的数组)

1 个答案:

答案 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 ++文本解析代码中发生的典型错误。