我还在学习 C++,但我不知道该怎么做。
我有一个学生班级,有以下字段:姓名、身份证等。
我想让用户通过 cin>>aStudent 输入所有信息。这太奇怪了(在java中不匹配)我怎么能重载>>所以它会这样工作?
我还在学习 C++,但我不知道该怎么做。
我有一个学生班级,有以下字段:姓名、身份证等。
我想让用户通过 cin>>aStudent 输入所有信息。这太奇怪了(在java中不匹配)我怎么能重载>>所以它会这样工作?
一个天真的解决方案如下:
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;
⋮
即使这也过于简单,因为它不处理输入错误、可选终止等。但它应该更接近你想要的。
你需要超载operator>>
喜欢istream
std::istream& operator>>(std::istream& stream, Student& s){
//read from stream
return stream;
}
并使其成为学生的朋友