本文主要是介绍输入流cin的状态,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于标准输入流cin,有时该操作会发生错误,如:
#include<iostream>
using namespace std;
int main()
{int val=0;while(!(cin>>val)){cout<<"enter again"<<endl;}cout<<val<<endl;cout<<"end"<<endl;return 0;
}
当输入的不是整形int而是字符时,输入流就会发生错误。一个输入流一旦发生错误,其后的io操作都会失败。如上面的程序,当输入字符后,程序就进入死循环状态。这是因为一旦输入失败,会产生一个cin.fail()的错误状态。而要使用cin输入,则必须处于无错误状态,由于存在错误状态,所以程序处于死循环中。
修改如下:
#include<iostream>
using namespace std;
int main()
{int val=0;while(!(cin>>val)){cin.clear ();/*修改cin错误状态*/cin.sync ();/*清空输入缓存区*/cout<<"enter again"<<endl;}cout<<val<<endl;cout<<"end"<<endl;return 0;
}
这篇关于输入流cin的状态的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!