当我第一次调用该函数时,它工作正常。
但是当我第二次调用该函数时,它只是跳过代码的第一部分,我试图在向量vec_name中添加一个新名称并将我发送到for循环。
void addNewStudent(int num)
{
string name;
cout << "Add new student" << endl;
cout << "Name : ";
getline(cin, name);
vec_name.push_back(name);
float avg = 0;
for (int i = 1; i <= num; i++)
{
float temp;
cout << endl << "Enter " << i << " grade : ";
cin >> temp;
avg += temp;
}
avg /= num;
vec_avg.push_back(avg);
}
我做错了什么?
我在函数末尾添加了cin.ignore()。
void addNewStudent(int num)
{
string name;
cout << "Add new student" << endl;
cout << "Name : ";
getline(cin, name);
vec_name.push_back(name);
float avg = 0;
for (int i = 1; i <= num; i++)
{
float temp;
cout << endl << "Enter " << i << " grade : ";
cin >> temp;
avg += temp;
}
avg /= num;
vec_avg.push_back(avg);
cin.ignore();
}
答案 0 :(得分:1)
更改
cin >> temp;
到
cin >> temp >> skipws;
在getline
(第一个函数调用)之后调用cin
(在第二个函数调用中)将读取一个空字符串(前一个cin
的换行符)。使用skipws
可以解决问题。