[英]Function with vectors not working properly
當我第一次調用該函數時,它可以正常工作。
但是,當我第二次調用該函數時,它只是跳過了代碼的第一部分,在這里我試圖為向量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
解決了該問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.