看到很多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>>则会跳过回车或空格