Разбор текстового файла в c ++ и сохранение строк в отдельных переменных - PullRequest
0 голосов
/ 10 марта 2011

У меня есть текстовый файл, который будет примерно таким.

lastname firstname, id

Я хочу просмотреть текстовый файл и добавить каждую запись в один вектор с тремя переменными: lastname, firstname, id

Вот код, который я использую, но дляпо какой-то причине я не получаю нужный вывод.

int Student::readStudents(vector<Student> &term){
  ifstream infile("spring2011.txt"); 
  if ( !infile ) {
    cout << "Error attempting to open file ... "
         << "(Perhaps it dosen't exist yet?)" << endl;
    return -1;          // report error condition ...
  }


  term.clear(); // empty the student vector
  string lname,fname, id;
  int j;
  while(infile){
    getline( infile, lname, ' ');
    getline(infile,fname, ',');
    getline(infile, id, ' '); 
    term.push_back( Student(lname, fname, id) ); // construct and add new Student
    j++;
 }
  infile.close();
  return j; //count of records
}

Это функция, которую я использую для отображения записей в векторе.

void Student::showStudents(vector<Student> &term){  
 for( size_t i=0; i< term.size(); ++i ){  
        cout << i+1 << ".\n"  
             << "Name   : " << term[i].getLastName()<<", "<<     term[i].getFirstName()<< endl   
             << "Student Number : " << term[i].getId() << endl;   
    }  
}       

1 Ответ

0 голосов
/ 10 марта 2011

Полагаю, вы на самом деле создаете объект ifstream, но не открываете файл для выполнения операций ввода с ним. Вам не хватает второго параметра конструкции объекта ifstream, который фактически открывает файл, как если бы был сделан вызов, чтобы открыть файл. Так что попробуйте -

ifstream infile("spring2011.txt", ifstream::in );

или

ifstream infile; 
infile.open ("spring2011.txt", ifstream::in);
...