C++中的cin.ignore的问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 09:38:46
这样一个程序

int main(int argc, char* argv[])
{
int a;
int b;
cout<<"Enter a number followed"<<"by a character";
cin>>a>>b;
cout<<endl<<"a="<<a<<",b="<<b<<endl;
cin.clear();

cin.ignore(200,'\n');

cout<<"Enter two numbers:";
cin>>a>>b;
cout<<endl<<"a="<<a<<",b="<<b<<endl;

while(getchar()!='\n')
;
return 0;
}

中间这句cin.ignore(200,'\n');去掉之后,运行时下面的a,b再次输入就无法输入,直接运行结束了...为什么呢...
cin.ignore(200,'\n');这里起到什么作用呢?

cin.ignore(200,'\n')是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用。每抛弃一个字符,它都要计数和比较字符:如果计数值达到200或者被抛弃的字符是'\n',则cin.ignore() 函数执行终止;否则,它继续等待。 它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。比如可以这么用:cin.ignore( 1024, '\n' );,通常把第一个参数设置得足够大,这样实际上总是只有第二个参数 '\n' 起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲(流)中清除出去。