【问题标题】:Reading from console and creating class instance从控制台读取并创建类实例
【发布时间】:2012-08-18 05:57:27
【问题描述】:

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

我有一个学生类,包含字段:姓名、ID 等。

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

【问题讨论】:

  • 我没听明白。学生是对象吗??
  • 关注link,希望它能解决你的问题

标签: c++ operator-overloading overloading iostream cin


【解决方案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;
⋮

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

【讨论】:

    【解决方案2】:

    你需要为istream 重载operator&gt;&gt;

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

    让它成为学生的朋友

    【讨论】:

      猜你喜欢
      • 2017-06-22
      • 1970-01-01
      • 2012-03-19
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 2021-08-28
      • 1970-01-01
      相关资源
      最近更新 更多