getline()未按预期工作
getline() not working as intended
嗨,我的getline()出现未知问题。我的程序应该定制一个提示,然后getline()应该读取用户输入,但由于某种原因,每次我运行它时,它只定制提示并跳到下一个提示符,不允许我输入任何内容。我会发布代码,希望你们能提供一些建议。
int main()
{
int students = 0;
students = getStudents(students);
int quizzes = 0;
quizzes = getQuizzes(quizzes);
string studentArray[50];
int* quizArray = new int[quizzes];
double* studentAverage = new double[students];
string studentName = "";
for(int i = 0; i < students; i++)
{
cout << "Enter the students name: ";
getline(cin, studentName);
studentArray[i] = studentName;
cout << studentName;
for(int j = 0; j < quizzes; j++)
{
cout << "Enter quiz " << j+1 << ":";
cin >> quizArray[j];
}
studentAverage[i] = calculateAvergage(quizArray,quizzes);
cout << studentArray[i];
cout << studentName;
}
cout << endl;
cout << "Student Quiz Average" << endl << endl;
cout << "---------------------------------" << endl << endl;
for(int i = 0; i < students; i++)
{
cout << studentArray[i];
cout << setw(10) << studentAverage[i] << endl << endl;
}
}
int getStudents(int students)
{
cout << "How many students? ";
cin >> students;
cout << endl;
if(students > 50)
{
cout << "Invalid number of students, enter a number less than 50: ";
cin >> students;
cout << endl;
}
return students;
}
int getQuizzes(int quizzes)
{
cout << "How many quizzes? ";
cin >> quizzes;
cout << endl;
if(quizzes > 10)
{
cout << "Invalid number of quizzes, enter a number less than 10: ";
cin >> quizzes;
cout << endl;
}
return quizzes;
}
double calculateAvergage(int quiz_array[],int num_quizzes)
{
double average = 0;
for(int i = 0; i < num_quizzes; i++)
{
average = quiz_array[i] + average;
}
average = (average/num_quizzes);
return average;
}
从类似的流中读取单个值
cin >> quizzes;
不使用行的末尾字符(或尝试读取quizzes
后留下的任何其他无效字符),因此对getline
的下一次调用将继续从同一行输入中读取(通常您会期望在读取quizzes
后该行为空,因此getline
最终什么都不读取)。
如果在阅读quizzes
:后使用以下内容,您的程序应该可以工作
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
或者你可以简单地以与其他值相同的方式读取studentName
std::cin >> studentName;
与所有对operator>>
的调用一样,这会去掉所有前导空格,包括换行符。
相关文章:
- getline() 上的分隔符无法正常工作
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- 如何在使用getline后使cin工作
- 如何使 getline 命令在 while 循环中工作
- 对Getline的工作方式有更深入的深度
- C getline()函数无法按预期工作
- C STD :: getline / std :: Sort无法正常工作
- C++ while(getline()) 无法正常工作
- CIN.IGNORE如何与CIN和Getline一起工作
- cin.getline()函数在CIN之后无法正常工作
- C - getline stdin eof无法正常工作
- Getline 无法按预期使用字符串工作
- cin.getline()未按预期工作
- C++ cin.getline() 不能在循环中工作
- cout在获取行输入(getline)后无法在c++中工作
- Getline 无法按预期工作
- 通过getline()输入,正则表达式无法正常工作
- 我怎样才能让getline操作符工作
- Cin.getline 无法正确打印也无法正常工作
- std::getline() 访问冲突,以前可以工作,但现在无法从任何文件中读取