cin.get(ch)与ch = cin.get()的区别
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对象)
扫码关注本人微信公众号,有惊喜奥!公众号每天定时发送精致文章!回复关键词可获得海量各类编程开发学习资料!
例如:想获得Python入门至精通学习资料,请回复关键词Python即可。
【初久】星雨☆星晨: 感谢,有方向了,谢谢大佬
Nadeal: 不知道如今的博主是怎样的一个开发者了
weixin_75266376: 厉害(òωó)👍
_胡辣汤_: 这样你安装的插件全都没了
路过蜻蜓324: 第一种方法解决了,不过不知道 VS控制面板自带的修复能不能解决