getline 之后的 cin 问题使我的 while 循环永远不会在 c++ 的第二次迭代中结束
A problem with cin after a getline makes my while loop never end at the second iteration in c++
如果我将 getline 替换为 cin,作为测试,它会如我所愿地工作。但是当我引入 getline 时,它会在第二次迭代时创建一个永无止境的循环。我认为它与缓冲区有关,但我不知道它是如何工作的,所以我需要帮助。
这是代码:
while(true)
{
alumno++;
cout<<"Alumno "<<alumno<<":"<<endl;
getline(cin,nombre_alumno);
if(nombre_alumno == "EXIT")break;
cin>>nota;
}
这条语句之后
cin>>nota;
插入
std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
您需要包含 header
#include <limits>
如果我将 getline 替换为 cin,作为测试,它会如我所愿地工作。但是当我引入 getline 时,它会在第二次迭代时创建一个永无止境的循环。我认为它与缓冲区有关,但我不知道它是如何工作的,所以我需要帮助。
这是代码:
while(true)
{
alumno++;
cout<<"Alumno "<<alumno<<":"<<endl;
getline(cin,nombre_alumno);
if(nombre_alumno == "EXIT")break;
cin>>nota;
}
这条语句之后
cin>>nota;
插入
std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
您需要包含 header
#include <limits>