抱歉,我不知道如何更好地问这个,我是一个非常新手的程序员而且我不是在找你做我的作业,但我想知道为什么会这样。
int inputScores(string names [], double scores [])
{
int count = 0; // counter variable for number of student records in array
char again; // To check if user has more data
do
{
cout << "Enter student's name: ";
getline(cin, names[count]);
cout << "\nEnter student's score: ";
cin >> scores[count];
count++;
cout << "\nDo you have more student records to enter?(Y/N): ";
cin >> again;
}while(again == 'y' || again == 'Y');
当我运行此代码并调用该函数时,这种情况不断发生,我不知道如何修复它:
输入学生的姓名:亚瑟
输入学生的分数: 100
您是否有更多学生记录要输入?(是/否): y
输入学生的姓名:
输入学生的分数:
它会跳过&#34;输入学生的姓名问题&#34; (不允许我输入任何内容)并直接进入下一个问题。
答案 0 :(得分:2)
程序不等待您输入学生姓名的原因是,在您阅读该行中的\n
之后,输入流中仍然留有again
:
cin >> again;
当程序到达时:
getline(cin, names[count]);
它只是读取一个空行并移动到下一行。
您需要使用:
int maxCharsToIgnore = 100; // This seems large enough
// for your use case.
cin.ignore(maxCharsToIgnore,'\n');
之后
cin >> again;