C++ 如何检查字符串的第一个字符是否为大写?
我有一个以字符串作为参数的函数。 我要做的是检查字符串是否以大写字母开头。如果这是真的,那么我想返回真。如果它不是以大写字母开头,那么我希望返回false。够简单吗 我使用的代码是: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[
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轨道,我应该停止假设一个问题的标题有任何关联: