我试图打印输入,直到用户输入空白为止。因此,我使用了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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句