cin.get(ch)与ch = cin.get()的区别

版权声明:原创文章,转载请注明: 转载自 DT-IOT的博客https://blog.csdn.net/weixin_41213648 https://blog.csdn.net/weixin_41213648/article/details/84951403

cin.get(ch)和ch = cin.get()的区别

ch = cin.get() ;    //先调用cin.get()函数,然后将该函数的返回值赋给ch,语句的结果为ch的值。

cin.get(ch);    //在到达EOF值时,不会赋值给ch,ch只是接收输入字符。

二者的区别在一些经典的C++书籍《C++Primer Plus》中被总结成下表形式:

cin.get(ch)与cin.get()

属性     cin.get(ch) ch = cin.get()
传递输入字符的方式 赋值给参数ch 将函数返回值赋给ch
用于字符输入时函数的返回值    istream对象(执行bool转换后为true   ) int类型的字符编码
到达EOF时函数的返回值 istream对象(执行bool转换后为false   ) EOF

一般使用cin.get(ch),因其更符合对象方式,返回值是istream对象,这意味着可以讲它们拼接起来:

cin.get(ch1).get(ch2);

举例解释:

下面两种你认为有问题吗(自):   另:getchar()这个函数是不带参数的吧?  不能这样写 getchar(ch),我试了下 报错了,但是putchar(ch) 这个是带参的,注意区分

char ch;

while((ch = cin.get() ) != EOF) {}    ---正确(因为cin.get()那几个重载函数里面,只有不带参数的返回值是int型,而EOF为 -1)

while(cin.get(ch) != EOF) {}            ---错误(因为带参数的cin.get() 的返回值是流对象,即iostream对象)

 

猜你喜欢

转载自blog.csdn.net/weixin_41213648/article/details/84951403