我正在尝试打印输入,直到用户输入空白。所以,我使用了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
答案 0 :(得分:0)
您的代码要求两行:
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;
}
答案 1 :(得分:0)
问题是
getline(cin, n); // here
while(getline(cin,n) && !n.empty())
第一个getline
读取输入(第一行),但您在
while(getline(cin,n) && !n.empty())
所以,删除第一个getline
,这应该会给你想要的结果。