-1

我有一个将字符串作为参数的函数。我想要做的是检查字符串是否以大写字母开头。如果这是真的,那么我想返回真。如果它不是以大写字母开头,那么我希望返回 false。够简单吗?

我使用的代码是这样的:

bool filter(string word)
    {
        char cWord[50];
        char c;
        for(int i = 0; i <= word.size(); i++)
        {
            cWord[i] = word[i];
        }
        c = cWord[0];
        if(isupper(c)){return true;}
        else{return false;}
    }

但是,我认为它的功能不像我想要的那样。谁能确认我的功能应该正常工作,或者是否有更好的方法来检查第一个字符是否为大写字母?

4

3 回答 3

14

这应该像这样简单:

bool firstUpper(const string& word) { return word.size() && std::isupper(word[0]); }
于 2013-01-13T16:30:48.300 回答
2

在检查字符串不为空后,您可以简单地使用std::isupperfrom header 。<cctype>

bool filter(const std::string& word)
{
  return (!word.empty()) && std::isupper(word[0]);
}
于 2013-01-13T16:31:13.883 回答
0

只要您的参数word少于 50 个字符,您的函数就可以工作。如果word更长,您将覆盖cWord并损坏您的堆栈。正如其他人已经表明的那样,不需要复制word来测试第一个字符。

于 2013-01-13T16:45:35.853 回答