使用 getline(cin,n) 输入;没有打印第一个输入,我也没有使用 cin>> 在任何地方输入

Input using getline(cin,n); is not printing first input and i am not using cin>> to take input anywhere

我正在尝试打印输入,直到用户给出空白 input.So,我使用了 getline(cin,input)。但是,当我使用 getline(cin,input) 时。它在给出时跳过第一个输入输出。

#include <iostream>
using namespace std;
int main() {
    while(1)
    {
        string n;
        getline(cin, n);
        while(getline(cin,n) && !n.empty())
        {
            cout<<n<<endl;;
        }
        if(n.empty())
            break;
    }
    return 0;
}

示例输入:

12  
2

获得的输出:

2

需要输出:

12   
2  

您的代码询问行两次:

1) 在嵌套循环之前

  getline(cin, n);

2) 嵌套循环条件内

  while(getline(cin,n) && !n.empty())

我的建议是简化程序如下:

#include <iostream>
#include <string>
using namespace std;
int main() {
    while(1)    // only one loop is needed
    {
        string n;
        getline(cin, n);   // read line
        if(n.empty())      // check line
            break;         // stop loop
        else
        {   
            cout << n << endl; // print line
        }
    }
    return 0;
}

或只保留没有while(1)的嵌套循环,例如:

#include <iostream>
#include <string>
using namespace std;
int main() {
    string n;

    while(getline(cin,n) && !n.empty())
    {
        cout<<n<<endl;
    }

    return 0;
}

问题是

    getline(cin, n);                         // here
    while(getline(cin,n) && !n.empty())

第一个 getline 读取输入(第一行),但您丢弃并在

中再次读取
while(getline(cin,n) && !n.empty())

所以,删除第一个 getline,这应该会给你想要的结果。