为什么我不能使用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;
}
答案 0 :(得分:0)
j 变量怎么样,当下一个for循环迭代开始时,它不会设置为零,所以在第二次迭代中你使用垃圾强>
答案 1 :(得分:0)
每次使用cin
时,它都会存储在内存中输入的每个字符,直到遇到换行符。这块内存称为输入缓冲区。
当您输入'n'时,返回键位于cin缓冲区中。
您应该使用cin.ignore
来摆脱这个换行符。
在getline (cin,s1);
之前添加cin.ignore
声明