c ++中getline输入错误

gsd*_*sdf 1 c++ getline

嗨,伙计们,我在从 getline 获取输入时遇到未知错误。我的目的是从用户那里获取一个数字和两个字符串作为输入并打印第一个字符串。这是问题代码

#include <iostream>
using namespace std;

int main() {
  int t;
  cin>>t;
  while(t--)
   {    string s,p;
        getline(cin,s);
        getline(cin,p);
        cout<<s;
   }
  return 0;
  }
Run Code Online (Sandbox Code Playgroud)

现在,当我提供如下输入时:

1
abababa abb
b
Run Code Online (Sandbox Code Playgroud)

它不打印任何东西。为什么会这样?

jfl*_*fly 6

之后cin>>t,流中剩余一个换行符,然后该换行符将被分配给s,因此cout<<s似乎什么都不打印(实际上,它打印了一个换行符)。
添加cin.ignore(100, '\n');之前首先getline加入换行符。