C ++如何确定char是否是单词中的第一个char

时间:2015-02-05 22:31:54

标签: c++

看起来这应该很简单,但我似乎无法弄明白。我正在尝试编写一个函数,如果pos位置的字符是单词的第一个字符,它将返回true。这个例子的一个词被定义为任何字母数字字符串。

这是我最近的尝试:

bool wordBeginsAt (const std::string& message, int pos)
{
string temp;
int x;

    for (x=pos;isAlphanumeric(message[x]==true);x++)
    {
        temp[x] = message[x];
    }
        if (temp[pos]!=0)
        {
            return false;
        }

        else

        return true;

    }

 bool isAlphanumeric (char c)
{
     return (c >= 'A' && c <= 'Z')
     || (c >= 'a' && c <= 'z')
     || (c >= '0' && c <= '9');
}

2 个答案:

答案 0 :(得分:2)

根据您的定义,字符是单词中的第一个字符,如果它是字母数字,它是字符串中的第一个字符或字母之前不是字母数字。

答案 1 :(得分:0)

好吧,isAlphanumeric(message[x]==true)应该是isAlphanumeric(message[x])==true。但是你的代码有其他严重的问题,例如写出temp的界限,循环逻辑都是错误的,所以我认为最好重新开始。

您需要做的是:

  • 检查字符是否为字母数字
  • 检查前一个字符是否没有,或者没有前一个字符

不需要循环或变量。第pos == 0时会出现第二种情况;如果您实际上在查看第一个字符,则不想检查前一个字符。