读取文本文件并将数据存储在 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 并且只能使用 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;
}
如果你想从普通的 std::cin
那里读到类似的东西,你会怎么做?
你的输入操作符也是一样的。读入三个不同的变量,并用它们调用 setter 函数。
也可以把输入运算符做成class的friend
,然后就可以直接输入私有变量了。对于输入和输出运算符,将它们设为友元函数是很常见的。
我有一个 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 并且只能使用 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;
}
如果你想从普通的 std::cin
那里读到类似的东西,你会怎么做?
你的输入操作符也是一样的。读入三个不同的变量,并用它们调用 setter 函数。
也可以把输入运算符做成class的friend
,然后就可以直接输入私有变量了。对于输入和输出运算符,将它们设为友元函数是很常见的。