我尝试使用if(!cin)来验证用户输入是否确实是整数。但是我的程序然后进入一个无限循环,从未询问过新输入
do{
cin >> temp->data;
if(!cin){
cout << "Please enter a Number!" << '\n';
correct=false;
}
}while(correct==false);
如果有人可以帮助我,那会很好:)
最佳答案
当std::cin无法读取输入时,将设置适当的错误标志。因此,您想使用std::cin.clear()重置标志,以便下一个输入操作将正常工作,然后使用std::cin.ignore(..)跳过所有内容,直到新行,以免格式类似输入。
while (!(std::cin >> temp->data))
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "\nPlease enter a number!" << std::endl;
}
std::numeric_limits<std::streamsize>::max()
返回流可以容纳的最大字符数,从而确保整行被忽略。