c++中的Getline()函数需要少一个输入

getline() function in c++ takes 1 less input

本文关键字:输入 一个 中的 Getline 函数 c++      更新时间:2023-10-16
int main() 
{
int n;
cin>>n;
string str1[n];
for(int i=0;i<n;i++)
    getline(cin,str1[i]);
return 0;
}

我写了一个代码来输入n个字符串,但是代码只接受(n-1)个字符串作为输入。这是什么原因呢?

for循环运行n迭代,getline读取n行。考虑以下输入:

2
First
Second

在这个输入中有三行(不是两行!):2n, FirstnSecondn

您的格式化输入(cin>>n)读取第一行部分: 2。然后循环运行两次,读入nFirstn数据。第三行也是最后一行(Secondn)永远不会被读取。

解决方案是在循环开始前从第一行读取n。这可以通过多种方式实现。这里有一个:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n')
相关文章: