Arhn - архитектура программирования

Чтение текстового файла и сохранение данных в частных переменных-членах класса — C++

У меня есть файл myFile.txt, содержащий имя, фамилию и идентификатор учащегося в следующем формате:

First-Name Last-Name ID ‹-- Эта строка не включена в файл

Steve Smith 12345 ‹-- Эта строка включена в файл

У меня также есть класс Student, который выглядит как

class Student
{
private:
    std::string firstName;
    std::string lastName;
    int id;
public:
    Student();
    Student(std::string fname, std::string lname, int i);
    ~Student();

    void setFirstName(std::string fnam);
    std::string getFirstName();

    void setLastName(std::string lnam);
    std::string getLastName();

    void SetID(int i);
    int getID();
};

Я хочу прочитать файл myFile.txt и сохранить информацию в соответствующих частных переменных-членах студенческого класса.

Я знаю, что мне нужно перегрузить оператор >>, но я не могу понять, как сохранить данные из файла в соответствующие переменные, когда переменные private.

Чтобы записать в файл, я перегрузил оператор << следующим образом.

std::ostream& operator << (std::ostream &out, Student &stu)
{
    out << stu.getFirstName() << " " << stu.getLastName() << " " << stu.getID() << std::endl;
    return out;
}

Вопрос: как перегрузить оператор >>, чтобы данные из текстового файла сохранялись в соответствующих переменных, когда переменные являются личными и доступны только с использованием setter и getter функции?

std::istream& operator >> (std::istream &in, Student &stu)
{

    in >> //what do i write here ? do i have to call the setter functions ? if so, how ?
    return in;
}

Ответы:


1

Если бы вы прочитали что-то подобное в старом добром std::cin, как бы вы поступили?

То же самое для вашего оператора ввода. Считайте три разные переменные и вызовите с ними функции установки.

Вы также можете сделать оператор ввода friend класса, а затем вы можете вводить непосредственно в частные переменные. Для операторов ввода и вывода очень часто делают их дружественными функциями.

07.01.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..