isalpha() 函数不适用于字符串中的空格

pur*_*lip 2 c++ tolower isalpha

我编写了一个代码,以便它使用 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;
}
Run Code Online (Sandbox Code Playgroud)

请帮我。谢谢

Jiř*_*aum 5

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

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