由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - cin.clear() 怎么用
相关主题
C++ vector 到底能多大C++里面
A try-catch problem in C++两个继承问题
a simple question for C++ class为什么我看不懂下面的code,是不是水平还不够?
which func will be called?C++ 弱问一个
请问一个exception题目C++疑问
reverse words, not the Microsoft one!!!c++ 是否也有class method??
about new operatortwo c++ interview questions! (转载)
关于C++中一个Class的大小 (转载)请教一个作用域的问题
相关话题的讨论汇总
话题: sel话题: done话题: cin话题: idx话题: endl
进入Programming版参与讨论
1 (共1页)
r******9
发帖数: 129
1
bool done = false;
int sel;
do{
cin >> sel;
if(cin.fail())
{
cout << "invalid input("< cin.clear();
}
else if(sel <0 || sel >= idx)
{
cout << "out of range [0-"<< idx-1 <<"], try again " << endl;
}
else
{
done = true;
}
}while(done == false);
如入 ‘a', 结果就死循环了, cin.clear()不是可以reset cin么?
l******e
发帖数: 12192
2
add cin.ignore() or cin.flush()

【在 r******9 的大作中提到】
: bool done = false;
: int sel;
: do{
: cin >> sel;
: if(cin.fail())
: {
: cout << "invalid input("<: cin.clear();
: }
: else if(sel <0 || sel >= idx)

I*****y
发帖数: 602
3
clear() actually only resets the state flags. You need add
std::cin.ignore(std::numeric_limits::max(), '\n');
after the clear() to remove invalid input from input stream.

【在 r******9 的大作中提到】
: bool done = false;
: int sel;
: do{
: cin >> sel;
: if(cin.fail())
: {
: cout << "invalid input("<: cin.clear();
: }
: else if(sel <0 || sel >= idx)

1 (共1页)
进入Programming版参与讨论
相关主题
请教一个作用域的问题请问一个exception题目
c++ 得最基本问题reverse words, not the Microsoft one!!!
问个简单的memory allocation 的问题。about new operator
私有成员不能用类成员函数修改?关于C++中一个Class的大小 (转载)
C++ vector 到底能多大C++里面
A try-catch problem in C++两个继承问题
a simple question for C++ class为什么我看不懂下面的code,是不是水平还不够?
which func will be called?C++ 弱问一个
相关话题的讨论汇总
话题: sel话题: done话题: cin话题: idx话题: endl