使用 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
,这应该会给你想要的结果。
我正在尝试打印输入,直到用户给出空白 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
,这应该会给你想要的结果。