Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用getline(cin,n)输入;没有打印第一个输入,并且我没有使用cin>&燃气轮机;在任何地方获取输入_C++_Iostream_Cin_Getline - Fatal编程技术网

C++ 使用getline(cin,n)输入;没有打印第一个输入,并且我没有使用cin>&燃气轮机;在任何地方获取输入

C++ 使用getline(cin,n)输入;没有打印第一个输入,并且我没有使用cin>&燃气轮机;在任何地方获取输入,c++,iostream,cin,getline,C++,Iostream,Cin,Getline,我试图打印输入,直到用户给出一个空白输入。所以,我使用了getline(cin,input)。但是,当我使用getline(cin,input)时,它会在给出输出时跳过第一个输入 #include <iostream> using namespace std; int main() { while(1) { string n; getline(cin, n); while(getline(cin,n) &&

我试图打印输入,直到用户给出一个空白输入。所以,我使用了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;
}
获得的产出:

2
所需产出:

12   
2  

您的代码询问行两次:

1) 嵌套循环之前

  getline(cin, n);
  while(getline(cin,n) && !n.empty())
2) 嵌套循环条件的内部

  getline(cin, n);
  while(getline(cin,n) && !n.empty())
我的建议是将该计划简化如下:

#包括
#包括
使用名称空间std;
int main(){
while(1)//只需要一个循环
{
字符串n;
getline(cin,n);//读取行
if(n.empty())//检查行
break;//停止循环
其他的
{   
问题是

    getline(cin, n);                         // here
    while(getline(cin,n) && !n.empty())
第一个
getline
读取输入(第一行),但您放弃并在

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

因此,删除第一个
getline
,这应该会给您带来期望的结果。

也许连续的
getline
调用(一个在循环之前,一个在while表达式中)与第一次读取消失有关。您认为为什么需要裸调用?(或者嵌套循环,就这一点而言)。预期的输出对我来说没有意义,实际的输出也没有意义。我希望输入没有任何输出。顺便说一句,外部while循环是否有必要证明这个问题?@UlrichEckhardt检查编辑器格式。OP打算将它们放在单独的行上。是的,@WhozCraig,这解释了很多。我自由地编辑了那个sl为了可读性。。。