【问题标题】:isalpha() function not working for spaces in string [duplicate]isalpha()函数不适用于字符串中的空格[重复]
【发布时间】:2020-07-23 05:27:31
【问题描述】:

我编写了一个代码,以便它使用 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;
}

请帮助我。 谢谢你

【问题讨论】:

  • 失败的输入是什么?你在那个测试用例上得到的输出是什么?预期的输出是什么?
  • 这么多重复的问题可供选择...
  • 添加这一行cout &lt;&lt; A &lt;&lt; '\n';然后你可能明白发生了什么
  • 就像我给 input="adhGHt//'[]\Klj hyjc//ghDf" 然后它将输出作为 adhghtklj 而不是返回 adhghtkljhyjcghdf
  • 这并不能解决问题,但可以删除 else continue;。它什么也没做。

标签: c++ tolower isalpha


【解决方案1】:

cin &gt;&gt; A; 考虑空间来终止输入。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多