输入字符串数组定义大小为n,却只能输入n-1个?

问题遇到的现象和发生背景

定义的字符串数组大小为n,但在运行时只能输入n-1个

问题相关代码,请勿粘贴截图
int main()
{
    print s1;
    int n;
    cin>>n;
    string w[n];
    for(int i=0;i<n;i++)
    {
        w[i]=" ";
    }
    for(int i=0;i<n;i++)
    {
        getline(cin,w[i]);
    }

运行结果及报错内容

img

img

我的解答思路和尝试过的方法
我想要达到的结果

想要输入n组数据

定义数组 需要用常量(虽然 目前好像不会报错);
例如:
const int m = n;
string w[m];

如果是想按行输入 理论上
getline(cin,w[i]); 改为 cin>>w[i]就行了


为什么 会输入会是 n-1:
可能是因为 getline(cin,w[i]);
会把第一次 cin>>n 之后的 回车 算成一个 第一个元素了;
可以cout 看看前n个 值