繁体   English   中英

如何在C ++中使用空格输入字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM