【问题标题】:Function with vectors not working properly带有向量的函数无法正常工作
【发布时间】:2016-09-12 14:15:02
【问题描述】:

当我第一次调用该函数时,它工作正常。

但是当我第二次调用该函数时,它只是跳过了代码的第一部分,我试图在其中向向量 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();
}

【问题讨论】:

    标签: c++ function vector


    【解决方案1】:

    改变

    cin >> temp;
    

    进入

    cin >> temp >> skipws;
    

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

    【讨论】:

    • 它没有帮助,但在阅读了你的答案后,我发现了 cin.ignore() tnx
    • 是的,或者cin.clear();。但是skipws 通常可以工作。@user3350597
    猜你喜欢
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2018-12-22
    • 2017-12-15
    • 2013-03-27
    • 2012-08-15
    相关资源
    最近更新 更多