【发布时间】:2014-06-20 00:42:22
【问题描述】:
对不起,我不知道如何更好地问这个问题,我是一个真正的新手程序员,我并不是在找你做我的作业,但我想了解为什么这种情况一直发生。
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');
当我运行此代码并调用函数时,这种情况不断发生,我不知道如何修复它:
输入学生姓名:Arthur
输入学生的分数:100
你有更多的学生记录要输入吗?(Y/N):y
输入学生姓名:
输入学生的分数:
它跳过“输入学生姓名问题”(不让我输入任何内容)并直接进入下一个问题。
【问题讨论】:
-
为什么不是
names和scores局部变量?将它们作为副本传递是违背目的的。 -
cin 只读取 y,让下一个 getline 读取换行符。这个问题很常见,所以请尝试查看“相关”列的解决方案,并记住在发布之前对 SO 进行良好搜索
-
@tadman 我不太清楚你的意思,这只是老师让我们做作业的方式,将这些数组传递给这个函数,该函数应该用用户的输入填充数组。
-
@user3125280 在发布此之前我搜索了很多,我还没有上过这个网站但是现在我正在查看其他帖子,我想我只需要阅读更多关于键盘缓冲区和 cin .谢谢!