【问题标题】:Difference between `istream::get` and `operator>>(istream&, char&)``istream::get` 和 `operator>>(istream&, char&)` 之间的区别
【发布时间】:2013-03-15 15:10:32
【问题描述】:

使用istream::getoperator>>(istream&, char&)有什么区别:

char ch;    
cin.get(ch);
cin>>ch;

你能解释一下block 1无效而block 2有效的可能原因

cin.get().get();//Error **block 1**
char ch;
cin.get(ch).get(ch);//Doesn't gives an error  **block 2**

我的猜测是:

块 1 相当于 cin>> >>; 而块 2 cin>>ch>>ch;

【问题讨论】:

  • 别猜了,找一本编程入门读读。我建议 Bruce Eckel 的“Thinking in C++”。
  • C++ 类是否提供了一些不同的方式来输入一些数据。您可以使用 operator override operator>>(std::istream &, T &) 或一些静态方法。在不受某些数据类型限制的意义上,使用 >> 运算符更加通用。

标签: c++ data-structures


【解决方案1】:

istream::get(char c) 返回 istream&,而另一个无参数版本返回 int。

因此,在第二个版本中,您在完全合法的 istream& 上调用 .get(ch),而在第一个版本中,您尝试调用 不合法的 int 方法。

【讨论】:

    【解决方案2】:

    >> 被称为提取运算符,例如,当您希望将输入存储在某个变量中时,可以使用它。详情请参考link

    当你使用.时,表示你要访问一个类对象的方法。

    您的第一个块不正确,因为 cin.get() 返回的 int 类型没有关联方法 get()它。其中 cin,get(ch) 返回 istream& 类型的值。

    【讨论】:

      猜你喜欢
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      相关资源
      最近更新 更多