用getline函数输入为什么不行?

当i=1时输入的好像是一个空字符串"",这是为什么?用cin>>s1能得到想要的输入。

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    string s1;
    for(int i=1;i<=n;i++){
        getline(cin,s1);
        cout<<s1<<endl;
    }
    return 0;
}

输入:
3
a1b2c3d4
Linle@ACM
^~^@^@!%

因为cin>>n,n输入后的换行符会被第一次的getline读取