cin.ignore()正在产生不良行为

时间:2017-07-16 19:59:50

标签: c++ getline flush

以下代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin >> t;
    while(t--)
    {
        string s;
        getline(cin,s);
        cout << s << "\n";
        cin.ignore(1000,'\n');
    }
    return 0;
}

示例输入:

  

2

     

名1

     

名称2

预期产出:

  

名1

     

名称2

错误输出:

  

Name2 //后跟空白行

我不知道为什么会这样。我尝试了stackoverflow上给出的所有解决方案,但不幸的是没有一个对我有用。谢谢你。

1 个答案:

答案 0 :(得分:0)

cin.ignore()用于在输入整数后忽略新行。 因此,请在cin.ignore()

之后使用cin>>t
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin >> t;
    cin.ignore();
    while(t--)
    {
        string s;
        getline(cin,s);
        cout << s << "\n";
    }
    return 0;
}