重载运算符>>并将其用于文件输出,

时间:2017-08-24 12:51:50

标签: c++ operator-overloading

我正在写一个小班学生。我的目标是将类对象的数据写入txt文件,然后读取文件中的所有行,并从同一文件中创建适当数量的对象。

这些是私人数据成员

class Student {
char* m_name = new char[1000];
int m_number;
double m_grade;

吸气者:

char* getName () const {return m_name;}
int getNum () const {return m_number;}
double getGrade () const {return m_grade;}

运营商>>:

ostream& operator<< (ostream& ost, const Student& obj){
    ost << obj.m_name << endl << obj.m_number << endl << obj.m_grade << endl;
    }

(2个对象的txt文件中的信息如下所示)

John Doe
12345
5.67
Jane Doe
98765
66666
4.44

运营商&gt;&gt; (我真的需要建议如何更好地超载它。我不喜欢我是如何做到的。也可以使用&#34; const 学生&amp; obj& #34;作为第二个参数?)

   istream& operator>> (istream& ist, Student& obj){
    char* temp = new char[255];
    int tempNum = 0;
    double tempGrade = 0;
    ist.getline(temp, 255);
    obj.setName(temp);
    ist >> tempNum;
    ist >> tempGrade;
    obj.setNum(tempNum);
    obj.setGrade(tempGrade);
    }

最后我的加载功能:(它没有工作,运行时(数组边界)错误)

 vector<Student> load () {
    ifstream ifs ("Data.txt");
    while (ifs){
        Student temp;
        ifs >> temp;
        cout << temp << endl;
        load.push_back(temp);
    }

我真的很感激有关如何使用我的&#34;&gt;&gt;&#34;操作员以及如何超载&#34;&gt;&gt;&#34;更好

0 个答案:

没有答案