尝试将一个文本文件放在一个结构为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();
答案 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?
}
}
}
};
注意:根据输出格式的需要,可能需要更多的大脑和更智能的分隔符。