C ++程序在第一次输入后忽略第一个字符

时间:2014-11-09 03:41:30

标签: c++ input cin

以下是我要求输入的主类中的代码。

Class in(nameOfClass, numOfStudents);
for (int i = 0; i < numOfStudents; i++)
{
    cout << "\nEnter the name of student " << i + 1 << ": ";
    string studentName = "";
    cin.ignore();
    getline(cin, studentName);
    cout << "\n ~ Enter the grades for " << studentName << endl;
    cout << " ~ (Use this format: 3 - 100 100 100)" << endl;
    cout << " ~ ";
    string gradeLine = "";
    getline(cin, gradeLine);
    Student stu = Student(studentName, gradeLine); in .addStudent(i, stu);
    cout << endl;
}

对于循环的第一次运行,studentName读取所有字符,包括空格,因为我使用了getline(cin, studentName);。如果我输入"Andrew",则studentName会在"Andrew"中读取。

但是,对于循环的所有进一步运行,如果我输入"Andrew"作为学生的姓名,程序会将"ndrew"存储到studentName变量中。我尝试在循环中的不同位置使用cin.ignore()cin.clear()cin.sync(),但它会停止输入,我需要输入'\n'才能继续使用并要求下一个学生的信息。

如何在循环完成后清除缓冲区,以便我在循环上的下一次运行读取所有字符,但循环不会暂停并等待用户输入'\n'

0 个答案:

没有答案