-4

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>> >>;块 2cin>>ch>>ch;

4

2 回答 2

2

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

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

于 2013-03-15T15:15:26.203 回答
1

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

当你使用. ,这意味着你要访问一个类对象的方法。

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

于 2013-03-15T15:15:57.763 回答