【发布时间】:2013-09-02 07:10:54
【问题描述】:
C++ 新手。在处理错误时出现正确循环的问题。我正在尝试检查用户输入是否为整数,并且为正数。
do{
cout << "Please enter an integer.";
cin >> n;
if (cin.good())
{
if (n < 0) {cout << "Negative.";}
else {cout << "Positive.";}
}
else
{
cout << "Not an integer.";
cin.clear();
cin.ignore();
}
}while (!cin.good() || n < 0);
cout << "\ndone.";
当输入一个非整数时,循环中断。我觉得我误解了cin.clear() 和cin.ignore() 的固有用法以及cin 在此循环中的状态。如果我删除cin.ignore(),循环将变为无限。为什么是这样?我该怎么做才能使它成为一个运行优雅的循环?谢谢。
【问题讨论】: