【问题标题】:C++ Input Overloading stuck in while loopC ++输入重载卡在while循环中
【发布时间】:2015-03-21 15:53:53
【问题描述】:

所以基本上在 C++ 中,我尝试使用运算符重载将多个对象输入到向量中。在我的 main ( ) 中,我有一个 while 循环,它从文本文件中读取书籍,然后将它们存储在以下字符串中:

 String name, title, pages, classcode, status;

然后我去创建我的 Book 对象:

Book b(name,title pages,classcode, status);

完成此操作后,我使用 cin 使用运算符重载将对象输入到我的向量中。

cin >> b;

我的重载函数如下所示:

istream &operator>>( istream  &input, Book &b )
  { 


input >>  b.classCode;
input >> b.author;
input >> b.title;
input >> b.status;
input >>  b.numPages;


 return input;
 }      

我正在尝试使用运算符重载将对象存储到一个向量中,但每次我运行程序时它只会存储一个 Book 对象。

【问题讨论】:

  • cin >> b; 不会“将对象存储到向量中”。它从标准输入中读取对象。这会覆盖对象的属性,因此您似乎不希望这样做,因为您说您已经从文件中读取了它们。

标签: c++ overloading operator-keyword


【解决方案1】:

要将Book 的多个实例存储在std::vector<Book> 中,您可以编写以下代码:

std::vector<Book> v;
Book b;
while (std::cin >> b)
    v.push_back(b);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-03
    • 2019-06-15
    • 1970-01-01
    • 2013-04-23
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多