while(cout << "How many elements do you want: " && !(cin >> el))
{
cin.sync();
cin.clear();
cout << " Invalid input!n";
}
el 是一个整数,当我输入一个字符时,循环是无限的。我按照 SO 中的一篇文章来修复错误的输入,但它不起作用,它会无限循环打印"你想要多少个元素:无效输入!我也尝试忽略(10000,""),但仍然不起作用...
当从流读取时发生错误时,将设置错误标志,并且在清除错误标志之前无法再读取。
这就是为什么你会得到一个无限循环。
而是使用 :
cin.clear(); // clears the error flags
// this line discards all the input waiting in the stream
cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
在cin.sync()
之前执行cin.clear()
。 它对我有用。