有关连续cin输入数据(cin不丢弃回车符,>>会跳过回车符)

看到很多C++代码中写cin.get()后面注释说这是吸收回车符,不知道是什么意思!

看到很多C++代码中写cin.get()后面注释说这是吸收回车符,不知道是什么意思!
比如
cout<<"请输入学好、年龄和入学成绩:"<<endl;
cin>>st1.id>>st1.age>>st1.score;
cin.get();
最后这个cin.get()书上说其功能是吸收回车符,请高手指点!
 
字符向来很难操作
因为你输入数据是以回车作为结束的,但是回车并没有输入到程序里面去,如果下面再出现要输入字符之类的语句,那么这个回车就先被输入,也就是会出现错误,所以在采集数据的时候,特别是好几种数据一起采集的时候,要十分注意回车符的问题。

回车符会留在缓冲区中,只不过cin流有一个默认状态是为输入操作符(即“>>"操作符)跳过空白,所以默认情况下用输入操作符读取时会跳过回车符等空白字符,实际上它是在缓冲区中的,可以通过noskipws操纵符让输入操作符不跳过空白字符,这样就可以读取到'\n'等空白字符了,如下:

//---------------------------------------------------------------------------
#include <iostream>

int main(void)
{
        char m,n;
        std::cin>>m;
        std::cin>>std::noskipws>>n;//不忽略空白字符
       	return 0;
}
//---------------------------------------------------------------------------

std::skipws操纵符用来设置忽略空白字符。

 
因为cin.get()是获取一个字符,回车也是字符,
cin.get()会把回车('\n')当作字符读入.而cin>>则会跳过回车或空格

  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值