getline 不接受任何输入

getline does not take any input

当用户输入名字和姓氏时,我需要使用 getline 来存储整行。当我 运行 程序时,它传递了一行 getline(cin,st[i].name);我的意思是输入函数不起作用,它会跳过 "score" 的下一个 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.

-- 我没有放完整的main函数。

所以当 l 运行 程序时,返回屏幕显示

有没有其他方法可以输入姓名?

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

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