2012-05-26 98 views
0

我試圖從文件中讀取一些我已經擁有的數據並將其加載到一個向量中。然後我試圖保存對文件的更改(哪些工作)。在構造函數中實現一個函數

但是當我運行該程序時,它不會讀取我的文件。這裏是我的代碼:

保存/載入功能:

void StudentRepository::loadStudents(){ 
    ifstream fl; 
    fl.open("studs.txt"); 
    Student st("",0,0); 
    string str,ss; 
    int i; 
    int loc; 
    if(fl.is_open()){ 
     while(!(fl.eof())){ 
      getline(fl,str); 
      loc = str.find(","); 
      ss = str.substr(0,loc); 
      st.setName(ss); 
      str.erase(0,loc); 
      loc = str.find(","); 
      ss = str.substr(0,loc); 
      i = atoi(ss.c_str()); 
      st.setId(i); 
      str.erase(0,loc); 
      i = atoi(ss.c_str()); 
      st.setGroup(i); 

     } 
    } 
    else{ 
     cout<<"~~~ File couldn't be open! ~~~"<<endl; 
    } 
    fl.close(); 
} 


void StudentRepository::saveStudents(){ 
    ofstream fl; 
    fl.open("studs.txt"); 
    if(fl.is_open()){ 
     for(unsigned i=0; i<students.size(); i++){ 
      fl<<students[i].getName(); 
      fl<<","; 
      fl<<students[i].getID(); 
      fl<<","; 
      fl<<students[i].getGroup(); 
      fl<<endl; 
     } 
    } 
    else{ 
     cout<<"~~~ File couldn't be open! ~~~"<<endl; 
    } 
} 

實施(據我可以去) - 我稱之爲加載功能作爲存儲載體的創建:

StudentRepository::StudentRepository(){ 
loadStudents(); 
} 

任何想法什麼/我在哪裏做錯了什麼,或一些建議來解決它?

回答

1

看來你正確地閱讀了學生信息。但是你不會將讀取信息添加到任何矢量中。您應該在loadStudents方法中使用類似students.push_back(st);的東西。此外,最好在循環開始時初始化st

+0

是的先生...我很抱歉我的部分缺乏注意力...但現在我有一個新的問題,它似乎不能轉換整數:|當我讀他們0和0 0:\ –

+1

檢查你的字符串是否有非數字字符。爲什麼不使用'std :: sstream'? – melmi

+0

idid改變osstream,但不工作:< –

相關問題