c++ - vector 无法正常工作的功能

标签 c++ function vector

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

但是当我第二次调用该函数时,它只是跳过了代码的第一部分,我在此处尝试向 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/

相关文章:

c++ - 对象构造/初始化的顺序

c++ - 在 Ubuntu 中包含 OpenCv 头文件

javascript - 从单击/更改函数中获取更新的变量值

c - 使用结构体指针作为函数参数时得到错误的值

c - 不兼容的隐式函数声明

C++指针值改变

c++ - 在 OpenCV 中比较图像边缘和边距

c - 在函数中修改 vector

c++ - std::vector 中的每个元素访问都是缓存未命中吗?

c++: 无法解决 vector 订阅错误