如何在c ++中输入带空格的字符串

时间:2016-03-10 08:11:25

标签: 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;
}

2 个答案:

答案 0 :(得分:0)

j 变量怎么样,当下一个for循环迭代开始时,它不会设置为,所以在第二次迭代中你使用垃圾

答案 1 :(得分:0)

每次使用cin时,它都会存储在内存中输入的每个字符,直到遇到换行符。这块内存称为输入缓冲区。 当您输入'n'时,返回键位于cin缓冲区中。

您应该使用cin.ignore来摆脱这个换行符。

getline (cin,s1);之前添加cin.ignore声明