我写了一个仅在输入int
时才能执行的函数。如果cin
失败,它将再次执行do{...} while()
直到输入int
,而不是char
。
我的问题是,一旦输入char
,它就会陷入无限循环。我不知道为什么。
int syst ()
{
int basisSys;
bool opAga = false;
do
{
cout << "Type the base you wanna calc. in" << endl;
cin >> basisSys;
if (cin.fail())
{
opAga = true;
}
}
while (opAga == true);
cout << endl << "You are calc. in " << basisSys << "system" << endl << endl;
return basisSys;
}
答案 0 :(得分:1)
忽略并清除该行很重要,因为operator>>
格式错误,将不再从流中提取任何数据。
while(!(cin >> basisSys)){
cout << "Bad value!";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}