当我第一次调用该函数时,它工作正常。
但是当我第二次调用该函数时,它只是跳过了代码的第一部分,我在此处尝试向 vector 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();
}
最佳答案
改变
cin >> temp;
进入
cin >> temp >> skipws;
在 cin
(第一个函数调用的)之后调用 getline
(在第二个函数调用中)将读取一个空字符串(前一个 cin 的换行符
)。使用 skipws
可以解决问题。
关于c++ - vector 无法正常工作的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39452446/