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>