`istream :: get`和`operator>>(istream&,char&)之间的区别

时间:2013-03-15 15:10:32

标签: c++ data-structures

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

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

你可以解释阻止1 无效的可能原因阻止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;

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

>> 称为提取运算符,可以在希望输入存储在某个变量中时使用。有关详细信息,请参阅此link

使用时,表示您想要访问类对象的方法。

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