2012-05-26 28 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,但不工作:< –

相关问题