读取文本文件并将数据存储在 Class 的私有成员变量中 - C++

Reading a Text File and storing the data in Private member variables of a Class - C++

我有一个 myFile.txt 文件,它包含以下格式的学生的名字、姓氏和 ID,

First-Name Last-Name ID <-- 该行未包含在文件中

Steve Smith 12345 <-- 该行包含在文件中

我也有一个 class 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文件并将信息存储在学生class.

各自的私有成员变量

我知道我必须重载 >> 运算符,但是当变量是 private[=46 时,我不知道如何将文件中的数据存储到相应的变量中=].

为了写入文件,我重载了 << 运算符,如下所示。

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

问题:如何重载>>运算符,以便当变量为时,文本文件中的数据存储在各自的变量中private 并且只能使用 settergetter 函数访问 ?

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;
}

如果你想从普通的 std::cin 那里读到类似的东西,你会怎么做?

你的输入操作符也是一样的。读入三个不同的变量,并用它们调用 setter 函数。

也可以把输入运算符做成class的friend,然后就可以直接输入私有变量了。对于输入和输出运算符,将它们设为友元函数是很常见的。