我尝试使用循环来验证输入等级是否为整数,但是当我故意输入字符时,程序什么都不做。它只在按输入时开始换行。
void fillvector(vector<student>& parameter)
{
string newname;
int newgrade;
int number;
cout << "How many students are in your class: ";
cin >> number;
for (int i = 0; i < number; i++)
{
cout << endl << "Enter student name: ";
while (1)
{
cin >> newname;
cout << "Enter student grade: ";
cin >> newgrade;
if (cin.fail())
{
cout << endl << "Grade must be an integer value, try again.";
cin.clear();
cin.ignore(INT_MAX);
i--;
break;
}
else
{
student student(newname, newgrade);
parameter.push_back(student);
break;
}
}
}
cout << endl;
}
答案 0 :(得分:1)
cin.ignore(INT_MAX);
这会使cin
忽略您输入的所有其他字符MAX_INT
..
你想要的是忽略下一个newline
:
cin.ignore(INT_MAX, '\n');
此外,在第一次迭代中使while(1)
循环在所有路径中中断是没有意义的。你可以删除那个内循环。