标题:cin.get(ch)和ch = cin.get()返回值的方式
只看楼主
Jeff_
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2018-3-25
结帖率:75%
已结贴  问题点数:10 回复次数:3 
cin.get(ch)和ch = cin.get()返回值的方式
#include <iostream>
int main()
{
using namespace std;
char ch;
int count = 0;
cin.get(ch); //或者 ch=cin.get( );
while (cin.fail() == false) // while ( ch != EOF )
{
cout << ch; //cout.put (ch) ;
++count;
cin.get(ch); //cin.get( );
}
cout << endl << count << " characters read\n";
return 0;
}

“cin.get(ch)返回一个对象,而不是读取的字符”这句话是怎么理解的?如果不是读取的字符为什么cout<<ch,又可以直接输出字符呢?他的输出方式是怎么回事?
其和ch=cin.get(),cout.put(ch)的输出方式又有什么不同呢?ch=cin.get(),cout.put(ch)的输出方式又是什么样的呢?
搜索更多相关主题的帖子: cin get cout put 输出 
2018-07-18 12:44
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:7 
ch = cin.get() ;    //先调用cin.get()函数,然后将该函数的返回值赋给ch,语句的结果为ch的值。
cin.get(ch);    //在到达EOF值时,不会赋值给ch,ch只是接收输入字符。
二者的区别在一些经典的C++书籍中被总结成下表形式:
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);


用cout.put();  如果里面是变量,则显示变量的ASCII值所代表的字符,如果是整数,则显示ASCII值为该整数所代表的字符。里面先计算整数,再将整数转为字符输出。
用cout.put('');  如果单引号里面是数字,则显示最后一位数字(小数也显示最后一位),如果单引号里面是字母,则显示字母。因为'a'是一个文本,所以直接显示这个文本,而不是转成ASCII值再输出字符。
2018-07-19 00:26
Jeff_
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2018-3-25
得分:0 
回复 2楼 自学的数学
传递输入字符的方式—>赋值给参数ch,与,在到达EOF值时,不会赋值给ch,ch只是接收输入字符。这两句话有点绕,不冲突吗,能不能解释一下,谢谢
2018-07-19 21:34
Jeff_
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2018-3-25
得分:0 
既然输入的字符赋给了ch,那函数判断ch != EOF 为什么也不可以(我试验了结果时 :输入字符当按下ctrl+z时将会一直输出)
int count = 0;
cin.get(ch);
while (ch != EOF)               
{
cout << ch; //cout.put (ch) ;
++count;
cin.get(ch); //cin.get( );
}
2018-07-19 22:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-488662-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.497349 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved