如何检查字符串的第一个字符是否为大写?

时间:2013-01-13 16:27:36

标签: c++ string char uppercase

我有一个以字符串作为参数的函数。 我想要做的是检查字符串是否以大写字母开头。如果这是真的,那么我想返回true。如果它不以大写字母开头,那么我希望返回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;}
    }

但是我不认为它的功能如何。任何人都可以确认我的功能应该正常工作,或者是否有更好的方法来检查第一个字符是否是大写字母?

3 个答案:

答案 0 :(得分:13)

这应该就这么简单:

bool firstUpper(const string& word) { return word.size() && std::isupper(word[0]); }

答案 1 :(得分:2)

在检查字符串是否为空之后,您只需使用标题std::isupper中的<cctype>

bool filter(const std::string& word)
{
  return (!word.empty()) && std::isupper(word[0]);
}

答案 2 :(得分:0)

只要您的参数word短于50个字符,您的函数就会起作用。如果word更长,您将覆盖cWord并损坏您的筹码。正如其他人已经表明的那样,没有必要复制word来测试第一个字符。