数组和结构与文本文件

时间:2016-04-04 21:00:44

标签: c++ arrays ifstream

尝试将一个文本文件放在一个结构为Students(FirstName)的数组中,但它放在

  

错误C2679:二进制'>>' :没有找到哪个操作符采用'学生'类型的右手操作数(或者没有可接受的转换)))

Students stud[15];
ifstream myfile;
myfile.open("student.txt");
for (int i = 0; i<14; i++)
{
    myfile >> stud[i];
    cout << stud[i] << endl;
}
myfile.close();

2 个答案:

答案 0 :(得分:0)

在Students类构造函数中,看起来你正在创建一个变量来保存它们的名字,因此在将它添加到文本文件时,你必须调用该变量,而不是整个Student对象。

myFile >> stud[i].firstName;

其中firstName是任何变量的名称,它包含Student构造函数中的FirstName。

答案 1 :(得分:0)

根据错误消息,Students缺少io流重载。你必须写它们。

class Students
{
    //rest of Students definition
    friend ostream& operator<< (ostream& out, const Students & val)
    {
        out << val.firstMember << " " << val.secondMember << " " << ... << '\n';
    }
    friend istream& operator>> (istream& in, const Students & val)
    {
        std::string line;
        if (std::getline(in, line))
        {
            std::stringstream linestream(line);
            if (! linestream >> val.firstMember >> val.secondMember >> ...)
            {
                 // handle error?
            }
        }
    }
};

注意:根据输出格式的需要,可能需要更多的大脑和更智能的分隔符。