我在循环中使用getline()。在第一个循环期间,一切都运行正常,除了最后一个getline()。在第二个循环期间,第一个getline()似乎已被跳过。这是循环:
while(true)
{
cout <<endl<< "Enter Student's Name: ";
getline(cin,tmp_name);
cout << "Enter Student's RegNo: ";
getline(cin,tmp_regno);
cout << "Enter Student's marks: ";
cin>>tmp_marks;
mystudents.push_back(student(tmp_name,tmp_regno,tmp_marks));
mystudents[no_ofStudents].getGrade();
no_ofStudents++;
cout<<endl<<endl<<"Do you wish to continue? To continue enter yes or any other key to stop: ";
getline(cin,continue_stop);
if (continue_stop!="yes"&&continue_stop!="YES")
break;
}
答案 0 :(得分:1)
cin >> tmp_marks;
在输入流中留下换行符(&#39; \ n&#39;)。你必须找到一种方法来读取之后的所有内容,直到下一个换行符。
答案 1 :(得分:1)
另一件事
if (continue_stop!="yes"&&continue_stop!="YES")
break;
这将在错误的时间中断while
循环。
答案 2 :(得分:1)
cin >> tmp_marks;
在输入流中留下'\n'
,您将在下一次阅读
std::getline( std::cin,continue_stop);
您可以使用以下内容忽略此字符:
std::cin>>tmp_name;
std::cin.ignore();
std::cout<<std::endl<<std::endl<<"Do you wish to continue?";
std::getline( std::cin,continue_stop);
if (continue_stop!="yes"&&continue_stop!="YES")
break;
答案 3 :(得分:0)
cin.ignore(numeric_limits<streamsize>::max(),'\n');
在cin之后尝试使用这个