Вы могли бы определить класс для хранения данных для каждого человека:
class Person {
public:
std::string name;
std::string study_path;
std::string semester;
unsigned int age;
};
Тогда можно определить оператор извлечения потока для этого класса:
std::istream & operator>>(std::istream & stream, Person & person) {
stream >> person.name >> person.study_path >> person.semester >> person.age;
return stream;
}
И тогда вы можете просто прочитать весь файл такой:
std::ifstream file("datafile.txt");
std::vector<Person> data;
std::copy(std::istream_iterator<Person>(file), std::istream_iterator<Person>(),
std::back_inserter(data));
Это прочитает весь файл и сохранит все экземпляры extrac ted записей в vector
. Если вы знаете количество записей, которые будете читать заранее, вы можете позвонить data.reserve(number_of_records)
перед чтением файла. Таким образом, у вектора будет достаточно памяти для хранения всех записей без перераспределения, что может потенциально ускорить загрузку, если файл большой.
Возможно, вам захочется узнать о циклах. – pmr
И еще один намек (SCNR): используйте международные идентификаторы и комментарии. Хери Кённн ню вениге деутч. – sbi