我有一个以字符串作为参数的函数。 我想要做的是检查字符串是否以大写字母开头。如果这是真的,那么我想返回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;}
}
但是我不认为它的功能如何。任何人都可以确认我的功能应该正常工作,或者是否有更好的方法来检查第一个字符是否是大写字母?
答案 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
来测试第一个字符。