使用istream::get
和operator>>(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;
答案 0 :(得分:2)
istream::get(char c)
返回istream&
,而另一个无参数版本返回int。
因此,在第二个版本中,您调用.get(ch)
而不是istream&
这是完全合法的,而在第一个版本中,您尝试调用方法获取一个不合法的强>
答案 1 :(得分:1)
>> 称为提取运算符,可以在希望输入存储在某个变量中时使用。有关详细信息,请参阅此link。
使用。时,表示您想要访问类对象的方法。
您的第一个区块不正确,因为 cin.get()会返回 int 类型,该类型没有关联的方法 get()它。作为cin,get(ch)返回 istream& 类型的值。