向量功能不正常的功能

时间:2016-09-12 14:15:03

标签: c++ function 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();
}

1 个答案:

答案 0 :(得分:1)

更改

cin >> temp;

cin >> temp >> skipws;

getline(第一个函数调用)之后调用cin(在第二个函数调用中)将读取一个空字符串(前一个cin的换行符)。使用skipws可以解决问题。