2

我编写了一个代码,以便它使用 isalpha() 函数删除除 alphabats 之外的所有内容(如空格和其他东西),并使用 tolower() 函数将其转换为小写。如果我不在字符串中放置空格,它工作正常,但如果字符串中有任何空格,那么它会超出空格。我不明白为什么会这样。这是我写的代码。

#include<bits/stdc++.h>
#include<cstring>
#include<cctype>
using namespace std;
int main()
{
    int i;
    string A,b="";
    cin>>A;
    for(i=0;i<A.size();i++)
    {
        if(isalpha(A[i]))
        b+= tolower(A[i]);
        
        else
        continue;
        
    }
    cout<<b;
}

请帮我。谢谢

4

2 回答 2

5

cin >> A;考虑终止输入的空间。

要获得整条线,请使用getline(cin, A);

于 2020-07-23T05:31:43.523 回答
4

cin读取字符串直到它遇到的第一个空格,如果您的输入字符串是“Hello World”,那么 cin 只会读取“Hello”。

您可以使用getline函数来读取完整的行。

于 2020-07-23T05:34:15.000 回答