C++ 使用getline(cin,n)输入;没有打印第一个输入,并且我没有使用cin>&燃气轮机;在任何地方获取输入
我试图打印输入,直到用户给出一个空白输入。所以,我使用了getline(cin,input)。但是,当我使用getline(cin,input)时,它会在给出输出时跳过第一个输入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) &&
#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为了可读性。。。