2014-08-30 49 views
-4

閱讀的對象。如果我有一個包含10行,每行包含有關下列對象信息的文件,從C++中的文件

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

重載'operator >>'。 – chris 2014-08-30 14:27:32

+0

該怎麼做。 – user3776323 2014-08-30 14:29:14

+0

在網站上有一個[特別好,命名問題](http://stackoverflow.com/questions/4421706/operator-overloading)。 – chris 2014-08-30 14:31:44

回答

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++文本解析代碼時發生的典型錯誤。