getline不接受任何输入

时间:2015-10-25 15:22:10

标签: c++ arrays struct getline

当用户输入姓名时,我需要使用getline存储整行。当我运行程序时,它传递getline行(cin,st [i] .name);我的意思是输入功能不起作用,它会跳过下一个用于“得分”的cin。

struct Student {
    string name;
    int score;
    char grade;
};

void main() {
    int SIZE;
    cout << " How many students are you going to add ? ";
    cin >> SIZE;
    Student* st = new Student[SIZE]; // user determines size of array.
    int i;
    for (i = 0; i < SIZE; i++)
    {   
        if (st[i].name.empty()) // if array list of name is empty, take input.
        {
            cout << "name and surname : ";
            //cin >> st[i].name;
            getline(cin, st[i].name);
        }
        cout << "Score : ";
        cin >> st[i].score; // take quiz score from user.

- 我没有把整个主要功能。

因此,当我运行程序时,会显示后退屏幕 like this

还有其他方法可以获取名称输入吗?

1 个答案:

答案 0 :(得分:3)

cin >> SIZE;之后,尾随换行仍然保留在标准输入中。

您需要cin.ignore()跳过剩余的换行符,以便后面的getline()可以获得该值。