以下是我要求输入的主类中的代码。
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'
?