我还在学习C ++,我不知道该怎么做。
我有一个班级学生,有字段:姓名,身份等。
我想让用户通过cin>> aStudent输入所有信息。这是如此奇怪(在java中没有匹配)我如何重载>>所以它会这样工作吗?
答案 0 :(得分:1)
一个天真的解决方案如下:
struct Student { string name; int id; … };
std::istream& operator>>(std::istream& is, Student& s) {
return is >> s.name >> s.id >> …;
}
虽然简单,但它的缺点是必须输入name
而没有空格,这可能不是你想要的。实际上,您通常希望一次提示一个字段:
Student s;
std::cout << "name: ";
std::getline(std::cin, s.name);
std::cout << "id : ";
std::cin >> id;
⋮
即使这样过于简单,因为它不处理输入错误,可选终止等。但它应该更接近你想要的。
答案 1 :(得分:0)
您需要为operator>>
istream
std::istream& operator>>(std::istream& stream, Student& s){
//read from stream
return stream;
}
并使其成为学生的朋友