[英]How to take input of a string with whitespace in c++
为什么我不能使用gets,getline和cin.getline接受字符串输入。当我调试时,似乎编译器跳过了这些行。这是我的代码-
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s1,s2;
char *p;
int n,m,i;
cin>>n;
for(i=1;i<=n;i++)
{
int j=0;
getline (cin,s1);
getline (cin,s2);
cout<<s1<<"\n";
while(s1[j]!='\0')
{
if(s1[j]==' ')
{
s1.erase(s1[j]);
}
j++;
}
}
cout<<s1<<S2<<endl;
return 0;
}
那么j变量呢,下一次for循环迭代开始时它不会设置为零 ,因此在第二个迭代中,您将使用垃圾 。
每次使用cin
,它都会将输入的每个字符存储在内存中,直到遇到换行符为止。 此内存块称为输入缓冲区。 当您输入“ n”的输入时,返回键位于cin缓冲区中。
您应该使用cin.ignore
摆脱这个换行符。
在getline (cin,s1);
添加cin.ignore
语句
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.