2016-04-04 45 views
0

因此我理解使用while循環逐行讀取文本文件的基本概念,現在我的問題是如何讀取每一行然後將這些行的內容放入變量是結構的一部分嗎?從文本中讀取行然後複製到結構中

我想出如何我的文字寫入文件而不是如何存儲從同樣的文件,所以這裏的信息是什麼,我有這麼遠,但它似乎沒有工作:

這工作:

void save(string fileName) 
{ 
    Container *traverser = list; 
    ofstream file; 
    file.open(fileName); 

    while (traverser != NULL){ 
     file << traverser->student->getFirstName() << endl; 
     file << traverser->student->getLastName() << endl; 
     file << traverser->student->getGrade() << endl; 
     file << traverser->student->getEdu() << endl; 
     traverser = traverser->next; 
    } 
} 

這不:

void load(string fileName) 
{ 
    Container *traverser; 
    Container* c; 
    Student *s; 
    string fname, lname; 
    int grade; 
    int edu; 
    ifstream file; 
    file.open(fileName); 
    string line; 

    while (getline(file, line)){ 
     file >> fname; 
     file >> lname; 
     file >> grade; 
     file >> edu; 
     s = new Student(fname, lname, grade, edu); 
     c = new Container(); 
     c->student = s; 
    } 
} 

有什麼事情的智慧h我的語法還是我一起做錯了?

該程序實質上是要求學生的名字,姓氏,年級和教育,然後將它存儲到一個文本文件,然後它應該從文本文件加載信息回到程序(我沒有發佈整個代碼,因爲有很多)。

謝謝!

附加信息:列表是結構的(學生)鏈表

+0

這個功課?那就是說你不能使用標準容器,比如'vector'或'list'? – user657267

+0

你讀了一行,然後從文件流中解析更多東西?當然你不想用stringstream來解析這一行嗎? – Maikel

+0

你不需要getline。使用while(文件>> fname >> lname >>等級>> edu)... – ZDF

回答

0

我懷疑你的數據在一個行

while (getline(file, line)){ 
    istringstream lstr(line); 
    lstr >> fname; 
    lstr >> lname; 
    lstr >> grade; 
    lstr >> edu; 
    s = new Student(fname, lname, grade, edu); 
    c = new Container(); 
    c->student = s; 
} 

這可能已經做的工作​​。 編輯:你可能想#include <sstream>

相關問題