0

我还在学习 C++,但我不知道该怎么做。

我有一个学生班级,有以下字段:姓名、身份证等。

我想让用户通过 cin>>aStudent 输入所有信息。这太奇怪了(在java中不匹配)我怎么能重载>>所以它会这样工作?

4

2 回答 2

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;
⋮

即使这也过于简单,因为它不处理输入错误、可选终止等。但它应该更接近你想要的。

于 2012-08-18T06:03:54.863 回答
0

你需要超载operator>>喜欢istream

std::istream& operator>>(std::istream& stream, Student& s){
   //read from stream
   return stream;
}

并使其成为学生的朋友

于 2012-08-18T06:04:10.293 回答