关于C++中cin()和cin.get()的用法,问题如下

chara[20];intx;cout<<"输入x";cin>>x;cout<<"输入字符数组:"cin.get();gets(a);为什么要加cin.get()????... char a[20];
int x;
cout<<"输入x";
cin>>x;
cout<<"输入字符数组:"
cin.get();
gets(a);
为什么要加cin.get()????
展开
 我来答
林尚白青天c
2019-12-10 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:35%
帮助的人:808万
展开全部
用来接收你输入的字符串的下一个字符达到统计字符的数目的目的。
cin.get(ch)这条语句每次只能接受一个字符。而你开始时候是输入一段字符串。而第一个cin.get(ch)只接受了你输入的字符串的第一个字符,后面的字符都还在缓冲区里面没有取出。而循环体里面的cin.get(ch)不会再要求你输入字符就是因为缓冲区里面还有字符没有取出,自然就取缓冲区的下一个字符,直到取完为止。
IT求索
推荐于2018-03-19
知道答主
回答量:3
采纳率:0%
帮助的人:3946
展开全部
get()是对象cin的一个成员函数, 用于吸收字符, 这里可以吸收掉回车。 否则回车也会被存储到字符数组a里面。 这就相当于C程序中的getchar(), 懂了吗?

这里用一个getchar()和cin.get()效果一样, 不信你可以试一下。。
追问
我看到百度上有说cin>>x;的cin函数是丢弃回车的,也就是输入x之后并没有在输入流保存回车,那为什么还要用get()吸收回车?
追答
是的, 但是如果先回车, 想要再输入字符串的话, 程序就终止了对吧。。 你没有理解gets的用法, 如果遇到回车, gets就起不到应有的作用了。。

你可以把a输出, 自己试一下有什么区别。。。 这段代码应该是某本书上的对吧, 作为一段程序,
健壮性是非常重要的。。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
棒棒qymkd
2014-09-10 · TA获得超过158个赞
知道答主
回答量:124
采纳率:0%
帮助的人:171万
展开全部
int get();
istream &get( char &ch );
istream &get( char *buffer, streamsize num );
istream &get( char *buffer, streamsize num, char delim );
istream &get( streambuf &buffer );
istream &get( streambuf &buffer, char delim );

get()函数被用于输入流,和以下这些:
读入一个字符并返回它的值,
读入一个字符并把它存储在ch,
读取字符到buffer直到num - 1个字符被读入, 或者碰到EOF或换行标志,
读取字符到buffer直到已读入num - 1 个字符,或者碰到EOF或delim(delim直到下一次不会被读取),
读取字符到buffer中,直到碰到换行或EOF, 或是读取字符到buffer中,直到碰到换行,EOF或delim。
(相反, delim直到下一个get()不会被读取 ).

你的两个程序,在每个cout<<"what is your first name? \n";前加上cin.get();吃掉之前的回车换行字符即可!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yellowgold001
2014-09-10 · TA获得超过156个赞
知道答主
回答量:76
采纳率:0%
帮助的人:43万
展开全部
用这个函数拿掉回车
追问
cin>>x;的cin函数是丢弃回车的,也就是输入x之后并没有在输入流保存回车,那为什么还要拿掉回车?
追答
所谓的丢弃回车就是不将回车 这个字符放到输入流里面,也就是说 回车这个字符就成了等待接受的一个字符,如果你直接gets 也就直接被捕获接收了。
那么cin.get就是来处理掉这个待接收的回车。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式