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即可。