您的位置:首页 > 其它

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

2014-09-04 20:28 239 查看

看到很多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>>则会跳过回车或空格
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐