VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 331|回复: 2

[求助] cin.get(ch)和ch = cin.get()返回值的方式

[复制链接]
35_avatar_middle
在线会员 Jeff_ 发表于 2018-7-18 12:48:38 | 显示全部楼层 |阅读模式
3驿站币
#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)的输出方式又是什么样的呢?





上一篇:网站开发怎么学?
下一篇:c++函传参为引用及指针

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-7-18 14:05:39 | 显示全部楼层
cin.get 之所以有时候返回字符,有时候返回对象,是因为 get 这个函数有多种重载的方式,详情见:
std::istream::get
int get();
istream& get (char& c);
http://www.cplusplus.com/reference/istream/istream/get/

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

35_avatar_middle
ico_lz  楼主| Jeff_ 发表于 2018-7-20 08:55:41 | 显示全部楼层
Syc 发表于 2018-7-18 14:05
cin.get 之所以有时候返回字符,有时候返回对象,是因为 get 这个函数有多种重载的方式,详情见:
std::is ...

int main()
{
    using namespace std;
    char ch;
    int count = 0;

    cout << "Enter characters; enter # to quit:\n";
    cin.get(ch);        // use the cin.get(ch) function
    while (ch != '#')
    {
        cout << ch;
        ++count;
        cin.get(ch);    // use it again
    }
    cout << endl << count << " characters read\n";
上面这段程序这里可用通过ch判断输入字符是否是”#“,于是我想用直接用ch判断输入是否是EOF,可为什么按下ctrl+z会出现还能继续输入,按下enter再按下ctrl+z会出现一直输出的情况。
#include <iostream>
int main()
{
        using namespace std;
        char ch;
        int count = 0;
        cin.get(ch);        // attempt to read a char
        while ( ch != EOF )  // test for EOF
        {
                cout << ch;     // echo character
                ++count;
                cin.get(ch);    // attempt to read another char
        }
        cout << endl << count << " characters read\n";
        return 0;
}
还有又说cin.get(char)函数在到达EOF时,不会将一个特殊值赋给ch。但在cin.get(ch)传递输入字符的方式又是赋给参数ch,这里就把我绕晕了。上面第一个程序我感觉时赋给了ch,于是可以通过ch判断是否等于#。不知道那里理解错了,希望大神指教一下。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-10-16 04:22

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表