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

C++ 如何检查字符串的第一个字符是否为大写?,c++,string,char,uppercase,C++,String,Char,Uppercase,我有一个以字符串作为参数的函数。 我要做的是检查字符串是否以大写字母开头。如果这是真的,那么我想返回真。如果它不是以大写字母开头,那么我希望返回false。够简单吗 我使用的代码是: bool filter(string word) { char cWord[50]; char c; for(int i = 0; i <= word.size(); i++) { cWord[i] = word[

我有一个以字符串作为参数的函数。 我要做的是检查字符串是否以大写字母开头。如果这是真的,那么我想返回真。如果它不是以大写字母开头,那么我希望返回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;}
    }
bool过滤器(字符串字)
{
char-cWord[50];
字符c;

对于(int i=0;i这应该是这么简单的:

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

在检查字符串是否为空后,只需从标题
中使用
std::isupper

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

只要参数
word
少于50个字符,函数就可以工作。如果
word
较长,则会覆盖
cWord
并损坏堆栈。正如其他人已经显示的那样,测试第一个字符时无需复制
word

我看不出有任何问题。请注意isupper会考虑系统区域设置来决定它接收的字符是否为大写字母。为什么要复制字符串?我假设
string
std::string
isupper
std::isupper
?此外,您很容易受到缓冲区溢出的影响……如果word是50个字符或更多字符,会发生什么情况更多?这一点,但还要考虑空字符串需要什么。我认为
!word.empty()
word.size()>0
word.size()
更容易混淆。您可能还应该使用
std::isupper
。对我来说
word.size()不混淆,它不应该是任何有能力的C++程序员。对代码> STD:好的,是上A/ECOD>。@ JuangopaZa:这是问题,不是吗?没有人回答它,主要是因为我们不知道问题是什么。@ LeNNESSRACESSIN轨道,我应该停止假设一个问题的标题有任何关联: